parte del mio codice non funzionava in x64, inizio a scavare e questo è dovuto ad un codice che richiama roba nativa tramite Runtime.getRuntime(). exec() ...cosa restituisce System.getProperty ("os.name") negli ultimi sistemi operativi Windows
Ma questo codice è probabilmente alcuni anni, che non tiene conto del sistema operativo più recente, e parte del codice seguente aspetto:
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;
Vorrei risolvere questo per tutti i nuovi SO (w2008, windows 7, ...), ma non ho accesso ad un host di ogni tipo, e non voglio installare in una VM solo per vedere il valore, qualcuno sa di qualche lista da qualche parte? non ho trovato ancora.
EDIT: Avrei bisogno di: windows 7, windows 2003, windows 2008, windows 2008R2 Inoltre, io non sono il 1.6u18 quindi non preoccuparti per il bug che alcuni ragazzi hanno menzionato.
Potresti essere interessato a questa domanda: http://stackoverflow.com/questions/1803075/crowdsourcing-a-complete-list-of-common-java-system-properties-and-known-values Sfortunatamente, non ho Ho avuto il tempo di rilasciare le mie scoperte come un vero progetto open source però :( – sfussenegger
Non è una risposta, ma è per questo che dovresti * sempre * avere un caso predefinito. –
A C. Ross, c'è un'altra istruzione, ma in ogni caso fallisce dato che il suo valore predefinito è linux – Persimmonium