假设我有一个没有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。