繁体   English   中英

Java进程可以从其他位置执行吗?

[英]Java process execution possible from different location?

我想从我的应用程序jar所在的其他位置创建一个进程,但是我不确定是否可行,如何执行。

例如,这是我正在处理的Minecraft包装器

Runtime rt = Runtime.getRuntime();

String proc = "java -Xms512M -Xmx1024M -jar minecraft_server.jar nogui";

Process pr = rt.exec(proc);

这将从当前位置执行minecraft jar(这会使minecraft地图和服务器配置文件出现在当前文件夹中,这不是我想要的)。


我可以通过将命令“ cd”放入如下所示的bat文件或bash脚本中来实现:

cd minecraft/
java -Xms512M -Xmx1024M -jar ../minecraft_server.jar nogui

然后我的代码将成为

Runtime rt = Runtime.getRuntime();

String proc = "mc.bat";

Process pr = rt.exec(proc);

这将从我想要的子目录“ minecraft /”中执行minecraft.jar。 但是,如果可能的话,我非常希望在Java应用程序中执行此操作,而无需使用批处理文件/ bash脚本。

假设您可以使用Java 1.5或更高版本,建议您使用ProcessBuilder而不是Runtime 这将使您轻松地为该进程设置工作目录。

final Process pr = new ProcessBuilder(
    "java",
    "-Xms512M",
    "-Xmx1024M",
    "-jar",
    "minecraft_server.jar",
    "nogui")
    .directory(new File("minecraft")) //Set the working directory to ./minecraft/
    .start();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM