Java类无法在Linux中找到或加载主类,但Windows确定

时间:2013-04-17 20:24:38

标签: java linux process

使用流程构建器在自己的操作系统进程中启动其他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();

3 个答案:

答案 0 :(得分:1)

Windows下的类路径分隔符为;,但Unix下为:

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

procBuilder.directory(new File("package/structure/starts/here"));