2009-11-25 34 views
3

我想在java程序中運行jar並捕獲它的stdout。 我想這樣做是爲了避免每次運行jar時的JVM啓動成本。這樣做最簡單的方法是什麼?幫助在Java程序中使用JarClassLoader運行jar

我開始通過修改Java的JarClassLoader並添加一個SecurityManager子類來阻止系統退出。 JarClassLoader是URLClassLoader的子類,在jar中查找主類,然後在那裏執行main函數。但是現在,當我嘗試執行該函數時,即使傳遞了正確的參數,我也會得到InvocationTargetExceptions。任何人都知道該從哪裏出發?

有沒有更簡單的方法來做到這一點?

+0

我猜這個錯誤是由於你設置的安全性,你有堆棧跟蹤?該jar是第三方應用程序?是不是可以編寫包裝而不是直接使用主要方法。 – vickirk 2009-11-25 23:06:56

+0

您可以使用aspectj將「around advice」短路應用於調用System.exit的代碼,以防止它被執行。 – vickirk 2009-11-25 23:15:48

+0

只是執行main()方法,還是使用通用接口來執行「插件」?動態加載的jar文件對其他庫有依賴關係嗎? – mhaller 2010-05-08 22:24:09

回答

0

我只是使用Runtime.exec(),但後來我無法阻止System.exit()