gpt4 book ai didi

使用 JAR 文件中的类的 Java 程序

转载 作者:行者123 更新时间:2023-11-30 05:07:17 24 4
gpt4 key购买 nike

我会尽力表达这一点。我有一个程序,它具有类似 API 的功能 - 它使用反射从类内动态调用方法。在本例中:

服务器.java

public static void main(String[] args) {
Class<?> clazz = Class.forName("DiHandler");
StHandler out = (StHandler) clazz.newInstance();
out.read();
}

DiHandler.java

// implements StHandler
import edu.ds.*;

public void read() {
Ds aType = new Ds();
aType = "134";
}

所以DiHandler有一个方法read(),它可以包含任何内容,编译后对Server.java来说并不重要。

我的问题是:DiHandler.java 使用 JAR 文件中的类 Ds。当我在 Eclipse 中处理 DiHandler.java 时(在与 Server.java 项目所在的单独项目中),我可以毫无问题地添加此 JAR。但是当我将 DiHandler.class 编译后移动到 Server.class 使用时,它怎么还能使用 JAR 文件呢?

我希望这是有道理的,我想另一种表达方式是如何允许 DiHandler 在不编辑类路径的情况下调用 JAR 中的类?

提前非常感谢,并对任何困惑或措辞不当表示歉意,我只能表示感谢并按照惯例提供一品脱的帮助。

中号

最佳答案

无论如何,您需要让加载 DiHandler 的 ClassLoader 知道如何加载您的 Ds 类。最简单的方法是通过类路径。

另一种方法是提供您自己的类加载器,用于加载DiHandler,并且该类加载器知道如何加载Ds。它可以是 URLClassLoader 的子类,允许您动态地将 URL 添加到 JAR 文件。我不能说它在实践中会是什么样子,因为我不知道您的上下文的详细信息。

关于使用 JAR 文件中的类的 Java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4648053/

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