从正在运行的Java进程启动另一个Java进程显示依赖于操作系统的行为

时间:2012-04-13 17:56:09

标签: java

我有这个调用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中获得不同的行为?

2 个答案:

答案 0 :(得分:3)

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

使用File.pathSeparatorChar代替

答案 1 :(得分:2)

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