2013-05-07 39 views
0

是否有可能運行一個螞蟻文件保存在另一個Java程序的任何jar裏面?我們可以運行保存在jar文件中的ant文件嗎?

Ant build.xml文件保存在masterjar.jar中。

我想它想:

pro = Runtime.getRuntime().exec("ant compile",null, new File("/home/sys/masterjar.jar!/ 
")); 

但我收到錯誤消息:

java.io.IOException: Cannot run program "ant" (in directory "/home/sys/masterjar.jar!"): error=2, No such file or directory 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042) 
    at java.lang.Runtime.exec(Runtime.java:615) 
    at java.lang.Runtime.exec(Runtime.java:448) 
    at Runner.TCRunner.main(TCRunner.java:100) 
Caused by: java.io.IOException: error=2, No such file or directory 
    at java.lang.UNIXProcess.forkAndExec(Native Method) 
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:135) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:130) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023) 
    ... 3 more 

如果我通過保持build.xml文件罐子外面試試吧,我能夠成功運行。

+0

我怕這是不可能的,除非你從jar中提取'build.xml'然後運行ant。 'Ant'希望構建文件存在於文件系統上,請參見[running ant](http://ant.apache.org/manual/running.html)。女巫的來源,你想要這樣編譯? – A4L 2013-05-07 10:41:38

+0

正如@ A4L上面所說..爲什麼?如果您需要將其存儲在jar中,則可能需要將其提取到臨時位置,然後運行它。但我仍然會回到爲什麼你需要這個問題,沒有其他的選擇嗎? – 2013-05-07 11:10:15

回答

0

Ant將無法將該構建文件拉出。您應該從jar中提取該文件(使用ClassLoader.getResourceAsStream(),可能是?),save it to a temporary file,然後將Ant指向該文件。

相關問題