如何调用另一个Jar文件的Java类?

如何调用另一个Jar文件的Java类?,java,reflection,jar,invoke,Java,Reflection,Jar,Invoke,我希望通过动态调用另一个jar中的类来接收结果 比如说, 名为A.jar的文件中的“A”目录 名为B.jar的文件中的“B”目录 我想动态地将一个类a.jar文件调用到B.jar文件 这是.jar文件的主类 由于采用了消息交换技术,因此未考虑套接字和RMI 主类(B.jar) 消息类(A.jar) 首先,您需要动态创建给定类的实例: Class<?> clazz = Class.forName("message"); Object messageObj = clazz.newInst

我希望通过动态调用另一个jar中的类来接收结果

比如说,

名为A.jar的文件中的“A”目录

名为B.jar的文件中的“B”目录

我想动态地将一个类a.jar文件调用到B.jar文件

这是.jar文件的主类

由于采用了消息交换技术,因此未考虑套接字和RMI

主类(B.jar)

消息类(A.jar)


首先,您需要动态创建给定类的实例:

Class<?> clazz = Class.forName("message");
Object messageObj = clazz.newInstance();
加载jar文件并从中加载消息类

在这两种情况下,您都可以从类中检索该方法并在创建的实例上调用它:

Method getMessage = clazz.getMethod("getMessage");
String result = (String) getMessage.invoke(messageObj);

动态地
,你是说类名是一个字符串?我们可以假设
A.jar
在类路径上吗?可以。它是通过类名(string)调用A.jar的类。您需要和的组合,是否可以访问另一个jar文件中的任何类?将类作为字符串调用没有问题。我想知道,如何在另一个jar文件中动态调用一个类谢谢你们的回答。如何调用另一个jar文件中的类?只要另一个jar文件位于类路径上,上述方法就可以工作。否则,您需要在运行时通过类加载器动态加载jar文件。我在哪里可以找到一个好的实际例子。我仍然不清楚您的实际问题-您的
a.jar
文件是否在类路径上?如果是这样,您可以从
A.jar
class.forName
实例化任何公共类。否则,您需要通过类加载器加载
A.jar
Class<?> clazz = Class.forName("message");
Object messageObj = clazz.newInstance();
URLClassLoader child = new URLClassLoader (
        new URL[] {new URL("file:///c:/temp/A.jar")}, main.class.getClassLoader());
Class<?> clazz = Class.forName("message", true, child);
Method getMessage = clazz.getMethod("getMessage");
String result = (String) getMessage.invoke(messageObj);