Я хочу запустить Java jar по времени выполнения, но Windows снова создает проблемы.
Я знаю, что это должно было произойти сотни раз, но я попробовал несколько вещей (например, String.replace ("/", "\")), и, поскольку я не могу отлаживать в Windows, это занимает некоторое время.
Это прекрасно работает под Unix:
public boolean run(String args[], String workingDir, boolean output) throws
FileNotFoundException {
if (args.length <= 0) {
System.err.println("No cmd provided");
}
if (workingDir == null) {
workingDir = "./";
}
ProcessBuilder pb = new ProcessBuilder(args);
pb.directory(new File(workingDir));
Process p;
int exitValue = 0;
try {
p = pb.start();
InputStream is = p.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
p.waitFor();
if (output) {
while ((line = br.readLine()) != null) {
setChanged();
notifyObservers(line);
}
}
exitValue = p.exitValue();
} catch (InterruptedException ex) {
return false;
} catch (IOException ex) {
return false;
}
if (exitValue == 0) {
return true;
} else {
throw new FileNotFoundException();
}
}
запущено:
public static void launchApp(String subPath) throws FileNotFoundException {
String[] args = String.format("java -jar -Xdock:name=AppName -Xdock:icon=%sicon.icns %AppName.jar", subPath, subPath).split(" ");
ExecRuntime.run(args, null);
}