Java .jar文件中的路径有问题
我想调用Java应用程序中文件夹中的编译器(非标准)。所以我写了这段代码:Java .jar文件中的路径有问题,java,jar,Java,Jar,我想调用Java应用程序中文件夹中的编译器(非标准)。所以我写了这段代码: Process p = Runtime.getRuntime().exec("closures/bin/javac " + filename); 成功了! 但是现在我想把这个编译器和我的.class文件打包成一个.jar文件。我的文件夹结构如下所示: .class(很多类) 闭包/(文件夹) 但当执行jar文件中的上述行(对子文件夹中编译器的调用)时,我得到了以下结果: Exception in thread "m
Process p = Runtime.getRuntime().exec("closures/bin/javac " + filename);
成功了!
但是现在我想把这个编译器和我的.class文件打包成一个.jar文件。我的文件夹结构如下所示:
- .class(很多类)
- 闭包/(文件夹)
Exception in thread "main" java.io.IOException: Cannot run program "closures/bin/javac": java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:475)
at java.lang.Runtime.exec(Runtime.java:610)
at java.lang.Runtime.exec(Runtime.java:448)
at java.lang.Runtime.exec(Runtime.java:345)
at Main.main(Main.java:44)
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.<init>(UNIXProcess.java:164)
at java.lang.ProcessImpl.start(ProcessImpl.java:81)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:468)
... 4 more
线程“main”java.io.IOException中的异常:无法运行程序“closures/bin/javac”:java.io.IOException:error=2,没有这样的文件或目录
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:475)
位于java.lang.Runtime.exec(Runtime.java:610)
位于java.lang.Runtime.exec(Runtime.java:448)
位于java.lang.Runtime.exec(Runtime.java:345)
Main.Main(Main.java:44)
原因:java.io.IOException:java.io.IOException:error=2,没有这样的文件或目录
位于java.lang.UNIXProcess(UNIXProcess.java:164)
在java.lang.ProcessImpl.start(ProcessImpl.java:81)
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:468)
... 4更多
在我看来,这似乎是一个路径问题
我做错了什么
谢谢。仅从您模糊的描述来看,为什么您认为您的应用程序的pwd与Closes所在的文件夹相同?在我看来,您是从.class运行它的,所以您可能至少需要
Process p = Runtime.getRuntime().exec("../closures/bin/javac " + filename);
但这仍然不是最健壮的调用方式。您不能在jar文件中执行可执行文件。在调用
Runtime.getRuntime().exec()
之前,必须先提取它
再想想,Runtime.getRuntime().exec()
使用操作系统的功能。您的操作系统不知道.jar
文件。你必须把它提取出来