我有一个“从”程序和一个“主”程序。主程序正在执行从程序,然后,从程序正在执行另一个程序(外部程序)。这使得主程序的重新启动成为可能,而不会结束外部程序。但这是我的问题:我可以使用进程构建器从主程序运行从程序,但从程序用他的进程构建器找不到java。让我犯错了吗?
我已经尝试过改变从执行目录和主执行目录。但是没有变化。
硕士的ProcessBuilder
final String javaCmd = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
final List<String> bpArgs = new ArrayList<>();
bpArgs.add(javaCmd);
bpArgs.add("-jar");
bpArgs.add(gameServer.getSlavePath());
bpArgs.add("servers/" + gameServer.getName().toLowerCase() + "/" + serverName);
bpArgs.add(gameServerVersion.executable);
final ProcessBuilder pb = new ProcessBuilder(bpArgs);
pb.directory(new File("").getAbsoluteFile()); // Run into the current directory
try {
final Process p = pb.start();
<...>
} catch (IOException e) {
<...>
}
奴隶的Processbuilder
final String javaCmd = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
List<String> bpArgs = new ArrayList<>();
bpArgs.add(javaCmd);
// TODO: Add RAM args
// Game args
bpArgs.add("-Dcom.mojang.eula.agree=true");
bpArgs.add("-DIReallyKnowWhatIAmDoingThisUpdate=true");
bpArgs.add("-jar");
bpArgs.add(args[1]); // executable JAR file
log("Starting with arguments >>> " + bpArgs.toString());
final ProcessBuilder pb = new ProcessBuilder(bpArgs);
pb.directory(new File("servers/minecraft/" + args[0])); // Run into the game directory
try {
p = pb.start();
<...>
p.waitFor();
log("Server stopped with exit code " + p.exitValue());
} catch (InterruptedException e) {
<...>
} catch (IOException e) {
<...>
}
这是我的实际输出:
java.io.IOException: Cannot run program "C:\Program Files\Java\jdk1.8.0_221\jre\bin\java" (in directory "servers\minecraft\servers\minecraft\Hellow"): CreateProcess error=267, Invalid directory name
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at eu.gameinbox.svm.slave.MinecraftSlave.main(MinecraftSlave.java:33)
Caused by: java.io.IOException: CreateProcess error=267, Invalid directory name
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
at java.lang.ProcessImpl.start(ProcessImpl.java:137)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 1 more
我只想让奴隶的进程构建器工作。谢谢你未来的帮助!
我找到问题了!感谢VivekRatanSinha!
服务器位于servers/minecraft/Hellow而不是server/minecraft/Hellow/minecravt
在我的奴隶的进程构建器中,我使用了
pb.directory(new File("servers/minecraft/" + args[0]));
但是 args 0 是总路径,而不是服务器名称!
我只是把它改成了
pb.directory(new File(args[0]));
现在它工作正常。
我把java的版本从jdk6更新到java7,但是我面临一个严重的问题,每当我在bin目录外执行任何java文件时,它都显示class not found,而在bin目录下执行它时,我却包含了类路径和path,javac编译了java文件,java类也存在于同一个目录下,但是java不能执行类文件,我搜索了一下,得到了类似java-cp的文件。classfilename,但它也会因为说非法参数cp
我在Ubuntu16.04下遇到了Neo4J服务器的问题。我想安装Neo4J的2.3.3版本。现在当我试图启动服务器时,我得到了这个错误: ~sudo/var/lib/neo4j/bin/neo4j start
我知道甚至这个问题已经被提出了几次,但没有找到解决这个问题的方法。我使用的编译命令:。我使用的运行命令: 错误:
我对java完全陌生,我需要运行一个从互联网下载的应用程序。所讨论的应用程序是“spinn3r”客户端,可在以下位置找到:http://code.google.com/p/spinn3r-client/downloads/detail?name=spinn3r-客户-3.4.06。焦油广州 我提取了焦油。gz找到了一个。jar文件。然后我跑: 我得到以下错误: 我该怎么解决这个问题?
我在从命令行运行一个java程序时遇到了严重的麻烦。我觉得我已经接近弄清楚哪里出了问题,但我只是不知所措,我需要帮助。 我正在尝试用以下命令运行一个简单的Hello World程序(在windows上的VSCode中,使用bash terminal): 这根本不起作用,但是,写入文件的完整路径确实起作用,所以像这样的东西是起作用的。 此外,使用F5运行文件也可以正常工作。我希望用命令行参数运行我的
我正在尝试使用此命令运行React本机应用程序 但是,环境路径错误 这是我的环境路径的样子 还有这一个 当我运行命令时仍然收到错误。