【发布时间】:2013-09-06 20:15:15
【问题描述】:
我知道这里已经有很多类似的问题,但我无法从它们那里得到更聪明的答案。我想在 jar 文件中加载一个类,此时这没问题,但是当我想将路径传递给我自己的 ClassLoader 时,它会抛出一个异常,它找不到该类。是否可以使用绝对路径在 jar 中加载类?例如,Class cls = loader.loadClass(/path/MyPlugin.jar/MyPlugin.class);
但是当我这样做时:
File test = new File("path/plugins/MyPlugin.jar/MyPlugin.class");
System.out.println(test.exists());
它打印出错误。我尝试使用有时在网络上看到的 MyPlugin.jar!/MyPlugin.class 或 MyPlugin.jar.jar!MyPlugin.class,尽管我真的不知道这意味着什么...
当我这样做时,它会找到类:
URLClassLoader loader = new URLClassLoader(new URL[] { "path/plugins/MyPlugin.jar" });
Class cl = loader.loadClass("MyPlugin");
但是现在,我怎样才能接收到路径? URL url = cl.getResource("MyPlugin"); 之类的东西(返回 null)
【问题讨论】:
-
弱猜测:你试过
cl.getResource(),而不是cls.getResource();? -
对不起,我的错,只是打字错误。
标签: java plugins jar classloader urlclassloader