ProcessBuilder在打包的jar上调用java -jar失败



我的java使用ProcessBuilder使用我在资源中添加的其他jar来运行几个命令。

它在Eclipse中工作得很好,但是一旦我将它导出到可执行的jar中,它就不起作用了:

//Defs Class has this line
public final static String APKTOOLS_JAR_PATH = Defs.class.getResource("/apktool.jar").getPath();
ProcessBuilder pb = new ProcessBuilder("java", "-jar", Defs.APKTOOLS_JAR_PATH, "d", apkPath, "-o", decodePath, "-f");
pb.redirectError(Redirect.INHERIT);
Process p = pb.start();

I get back:

Error: Unable to access jarfile apktool.jar

如果您的apktool.jar在与Java类相同的目录中运行

public final static String APKTOOLS_JAR_PATH = Defs.class.getResource("apktool.jar").getPath();

从相对路径

获取jar

但是如果你想从绝对路径加载它就应该这样做

public final static String APKTOOLS_JAR_PATH = Defs.class.getResource("/home/user/myjars/apktool.jar").getPath();

其中斜杠被认为是绝对路径

最新更新