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

时间:2016-09-30 12:22:33

标签: java jar executable-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();

我回来了:

Error: Unable to access jarfile apktool.jar

1 个答案:

答案 0 :(得分:0)

如果你的apk类中的apktool.jar正在运行

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();

其中前导斜杠被视为绝对路径