【发布时间】:2010-03-01 17:38:10
【问题描述】:
我的一些代码在 x64 中失败,我开始挖掘,这是由于一些代码通过 Runtime.getRuntime().exec()...调用本机内容...
但是这段代码可能有几年的历史了,它没有考虑到较新的操作系统,有些代码看起来像这样:
String osName = System.getProperty("os.name");
if (osName.equals("Windows NT") || osName.equals("Windows 2000") || osName.equals("Windows XP")) {
cmd = new String[3];
cmd[0] = WINDOWS_NT_2000_COMMAND_1;
cmd[1] = WINDOWS_NT_2000_COMMAND_2;
cmd[2] = command;
} else if (osName.equals("Windows 95") || osName.equals("Windows 98") || osName.equalsIgnoreCase("Windows ME")) {
cmd = new String[3];
cmd[0] = WINDOWS_9X_ME_COMMAND_1;
cmd[1] = WINDOWS_9X_ME_COMMAND_2;
cmd[2] = command;
我想为所有新操作系统(w2008、Windows 7、...)修复此问题,但我无法访问各种主机,我不想安装在 VM 中只是为了查看价值,有人知道某处的一些清单吗?还没找到。
编辑:我需要:Windows 7、Windows 2003、Windows 2008、Windows 2008R2 另外,我不是 1.6u18 所以不用担心一些人提到的错误。
【问题讨论】:
-
您可能对这个问题感兴趣:stackoverflow.com/questions/1803075/… 不幸的是,我还没有时间将我的发现作为一个合适的开源项目发布:(
-
这不是一个答案,但这就是为什么你应该总是有一个默认情况。
-
致 C. Ross,有一个 else 语句,但无论如何它都失败了,因为它默认认为它是一个 linux