2009-11-25 29 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()

相关问题