实例化一个类并在不同的JVM中运行其方法



假设我有一个没有arg构造函数的类X和一个方法m,我需要在一个新的JVM中运行它以实现魔法目的。

我最初的想法是从命令行(org.apache.commons.exec.CommandLine)调用它,但现在我被X没有main()方法这一事实所困扰(我假设通过命令行调用Java代码的唯一方法是将一个包含静态main方法的类传递给java,对吧?)。我可以通过快速迂回在调用类中创建自己的main()方法,并将作为其内容

public static void main(String[] args) {
  String classToInstantiate = args[some index];
  ...
}

但我想知道是否有更干净的方法来实现这一点。

概括一下,我需要知道在与主代码不同的JVM上实例化任意类以及调用该类上的任意方法的最干净的方法

感谢

使用Java 9,REPL包含在OpenJDK中。通过这种方式,您可以使用这个REPL从控制台以编程方式调用代码。它甚至可能在即将到来的更新中被移植回Java 8。今天,在Java8中,通过运行Nashorn REPL,只需一些干扰就可以实现这一点。

或者,您可以编写一个程序来完成这项工作,或者使用与JVM的其他语言(如Scala)打包的REPL。

最新更新