2

我有这个调用的代码java -cp somejar.jar com.company.mainClass。我使用流程构建器来调用它。在 Windows 中,它工作正常。在linux中,我得到了错误

无法找到或加载主类 com.company.mainClass。

这是我的代码示例:

ArrayList<String> args = new ArrayList<String>();
args.add(java);
args.add("-cp");
args.add("../dep/jetty-distribution-8.1.1.v20120215/lib/*;../build/jar/somejar.jar");
//args.add("../build/jar/LRM.jar");
args.add("com.company.mainClass");
ProcessBuilder processBuilder = new ProcessBuilder(args);
Process process = processBuilder.start();

任何人都知道为什么我在 windows 和 linux 中会出现不同的行为?

4

2 回答 2

3

您使用分号作为路径分隔符,而在 unix 上它是一个冒号。

File.pathSeparatorChar改为使用

于 2012-04-13T18:02:54.190 回答
2

linux下类路径(-cp)中的项目必须用冒号分隔:,在windows下用分号分隔;。在 Windows 中,路径分隔符是反斜杠而不是斜杠。使用 构建您的类路径File.separator,尽管它也应该使用斜杠。

于 2012-04-13T18:02:44.190 回答