gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:42:19 25 4
gpt4 key购买 nike

我想接收结果动态调用另一个 jar 中的类。

例如,

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

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

我想动态调用A.jar文件的类到B.jar文件。

这是A.jar文件的主类。

Socket和RMI因为消息交换技术不考虑。

主类(B.jar)

public class main {
public static void main(String[] args) {
//It dynamically creates an object of a Message Class in A.jar.
//And it invoke the getMessage function.
//And Save the return value.

}}

消息类(A.jar)

public class message{
public String getMessage(){

return "Hello!";
}
}

最佳答案

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

Class<?> clazz = Class.forName("message");
Object messageObj = clazz.newInstance();

这假定包含 message 类的 .jar 文件位于 classpath 上,以便 Java 运行时能够找到它.否则,您需要通过类加载器手动加载 jar 文件,例如就像在How should I load Jars dynamically at runtime? .假设包含 message 类的 A.jar 文件位于 c:\temp\A.jar,您可以使用类似

URLClassLoader child = new URLClassLoader (
new URL[] {new URL("file:///c:/temp/A.jar")}, main.class.getClassLoader());
Class<?> clazz = Class.forName("message", true, child);

加载 jar 文件并从中加载消息类。

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

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

关于java - 如何调用另一个Jar文件的Java类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34197169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com