在一个运行时实例中运行java程序

时间:2009-05-12 20:21:43

标签: jvm java

我想知道这样的事情是否可能: 我有一个java程序,它接受参数并将输出提供给控制台。我需要的是多次运行它 - 它(jar文件)运行顺利但启动和停止java运行时的开销很大。有没有办法实例化java运行时(或vm,我不知道如何调用它),然后以某种方式多次连接到该运行时并执行jar?

我希望尽管我对Java术语严重无知,但有人能够回答我的问题:D。

4 个答案:

答案 0 :(得分:11)

编写一个调用JAR的Main-class的包装类应该是直截了当的,并且重复地使用适当的参数调用AppClass.main():

// wraps class MyWrapped
class MyWrapper {

public static void main(String[] args) {
   for (each set of command-line args) {
       MyWrapped.main(arguments);
   }
}

请记住,Java应用程序的main()方法并不特别,它只是一个可以自己调用的静态方法。如果设计得当,它甚至可以被多个线程同时调用。

答案 1 :(得分:0)

设计一个更好的设计来创建一个多次执行代码的主包装器。用这些术语来思考。实例化一个类文件并根据需要多次调用方法。

答案 2 :(得分:0)

你有什么理由不能在循环中运行吗?

答案 3 :(得分:0)

请注意,列出的明显方法不会在即时之间重新加载类。如果修改静态字段,则不会重新初始化字段!

如果这可能是个问题,请考虑重写以解决此问题。另一种方法可能是研究基于OSGi容器的解决方案,因为它们不允许单独的段看到彼此,因此每次调用都有自己加载的类。