0

这是一个从 Web 下载的项目,我只是更改了路径以找到要使其动态加载的类。这是我尝试在运行时加载类的代码。但最终我得到了 ClassNotFoundException:

private static IExample newInstanceWithThrows() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
URLClassLoader tmp =
  new URLClassLoader(new URL[] {getClassPath()}) {
  public Class<?> loadClass(String name)
    throws ClassNotFoundException {
    if ("example.Example".equals(name)
        || "example.Leak".equals(name))
      return findClass(name);
    return super.loadClass(name);
  }
};

return (IExample) tmp.loadClass("example.Example")
  .newInstance();


}

  private static URL getClassPath() {
    String dir = "/Users/longtuan/develop/rjc2011/classes/";
    try {
      //return new URL(dir);
        File path = new File(dir);
        return path.toURL();
    } catch (MalformedURLException e) {
      throw new RuntimeException(e);
    }
  }

而类example.Example的路径是: /Users/longtuan/develop/java/rjc2011/classes/example

我使用的运行命令是: java -classpath ./bin example.Main

当前目录为: /Users/longtuan/develop/java/rjc2011

当前目录的所有东西都是这样的: 在此处输入图像描述

示例是我放置所有java文件的目录。我将编译的类文件放在目录bin中,除了类example.Example单独放在类中。

以上是我能提供的所有信息,感谢您的帮助。

4

0 回答 0