0

使用进程构建器在自己的操作系统进程中启动其他 Java 应用程序。该实现适用于 Windows 7,但不适用于 Linux。两台机器都使用 Java 1.7。这是一些示例代码:

//Windows OK, but Linux Could not find or load main class 
//weka.subspaceClusterer.MySubspaceClusterEvaluation 

ArrayList<String> commands = new ArrayList<String>();
commands.add("java");
commands.add("-cp");
commands.add("\".:lib/*\"");
commands.add("weka.subspaceClusterer.MySubspaceClusterEvaluation");
procBuilder = new ProcessBuilder();
procBuilder.inheritIO();
procBuilder.command(commands);
Process proc = procBuilder.start();
4

3 回答 3

1

类路径分隔符;在 Windows 下,但:在 Unix 下。

考虑创建一个可运行的 jar,您的类路径存储在 MANIFEST.MF 条目中,因此您只需执行java -jar whatever.jar.

于 2013-04-17T20:28:10.990 回答
1

我在 Mac OS X 上遇到了类似的问题。它在终端中有效,但在 Eclipse 中无效。如果我删除了类路径字符串周围的引号,它对我有用。当传递给 ProcessBuilder 的任何参数周围有引号时,我猜 Eclipse JVM 不喜欢它。

于 2016-05-20T16:27:39.387 回答
0

您的代码看起来正确。它只是找不到您的类文件。尝试设置进程的工作目录:

procBuilder.directory(new File("package/structure/starts/here"));
于 2013-04-17T20:48:37.770 回答