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

标签 java reflection jvm

假设我有一个类 X,它有一个无参数构造函数和一个方法 m,我需要在一个全新的 JVM 中运行它以达到魔法目的。

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

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

但我想知道是否有更简洁的方法来完成此任务。

总而言之,我需要知道在与我的主代码不同的 JVM 上实例化任意类以及对该类调用任意方法的最简洁方法。

谢谢

最佳答案

使用 Java 9,a REPL包含在 OpenJDK 中。这样,您就可以使用此 REPL 从控制台以编程方式调用代码。在即将到来的更新中,它甚至可能被移植回 Java 8。今天,在 Java 8 中,这可以通过运行 Nashorn REPL 来分散注意力。

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

关于java - 实例化一个类并在不同的 JVM 中运行它的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14987946/

相关文章:

java - Linux 上的 Java 1.7 (45) 默认使用什么 GC

java - 合并相邻矩形的算法问题

java - jackson IOException : Can not deserialize Class com. mycompany.models.Person$Address(类型为非静态成员类)作为 Bean

java - 类上对 newInstance 的简单反射调用的 InstantiationException?

java - 如何在不知道形式参数类型的情况下找到构造函数?

java - 将静态方法调用包装在方法对象中的开销是多少?

java - maven-site-plugin: <body> 标签未被继承

Java:如果只有一个类将使用新类,重构/解耦是否有用?

c# - 有没有办法通过反射设置 C# 只读自动实现的属性?

java - 使用非 Sun/Oracle JVM 的经验?