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

Server.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类。最简单的方法是通过类路径。

另一种方法是提供您自己的ClassLoader,用于加载DiHandler,而该ClassLoader知道如何加载Ds。这可能是URLClassLoader的子类,它允许您动态将URL添加到JAR文件中。由于我不知道您所处环境的细节,我无法说出实际情况。

10-01 02:47