В моем приложении Java есть следующий фрагмент кода:
boolean is64 = System.getProperty("os.arch").contains("64");
String oskPath = is64 ? "/SysWOW64/osk.exe" :"/system32/osk.exe";
Desktop desktop = null;
if (Desktop.isDesktopSupported()) {
desktop = Desktop.getDesktop();
}
String sysroot = System.getenv("SystemRoot");
try {
System.out.println("SysArch "+System.getProperty("os.arch")+ " " +is64);
desktop.open(new File(sysroot + oskPath));
которая называется экранной клавиатурой Windows. Когда я запускаю .jar на 64-битной Windows, это нормально, но не работает, когда я запускаю .exe. Я пробовал это:
Runtime.getRuntime().exec("cmd /c " + sysroot + oskPath);
и это:
Runtime.getRuntime().exec("osk");
но случилось то же самое. Я создал .exe с launch4j, и я попытался преобразовать .bat (который запускает .jar) в .exe, но ничего не произошло .. Может кто-нибудь поможет? Заранее спасибо.
os.arch
возвращает не архитектуру Windows, а JRE. См. Этот ответ: stackoverflow.com/a/2110847 - person Tunaki   schedule 08.09.2015exec
, и используйтеProcessBuilder
для создания процесса. - person Andrew Thompson   schedule 08.09.2015