Java 在运行时从外部jar、类路径加载映像

Java 在运行时从外部jar、类路径加载映像,java,jar,classloader,Java,Jar,Classloader,我有一个应用程序依赖于插件 我有一个例子,当我想从我的一个插件中加载一个图像时 加载图像的唯一方法是 ClassFromPLugin.class.getClassLoader().getResource("image.png"); 如何在不使用ClassFromPlugin的情况下加载图像 但是使用当前需要该映像的组件类 我正在运行时加载jar, 这个特定的组件谁想要加载图像 不知道是从哪里来的,他只知道图像的位置 谢谢您必须使用加载包含图像的jar的类加载器。如何做到这一点?每次检测到插件U

我有一个应用程序依赖于插件 我有一个例子,当我想从我的一个插件中加载一个图像时

加载图像的唯一方法是

ClassFromPLugin.class.getClassLoader().getResource("image.png");
如何在不使用ClassFromPlugin的情况下加载图像 但是使用当前需要该映像的组件类

我正在运行时加载jar, 这个特定的组件谁想要加载图像 不知道是从哪里来的,他只知道图像的位置


谢谢

您必须使用加载包含图像的jar的类加载器。

如何做到这一点?每次检测到插件URL时,我都会使用一个新的类加载器jarfile=new URLjar,file:+jarfile.getAbsolutePath+!/;URLClassLoader classLoader=URLClassLoader.newinstancenewurl[]{jarfile};我不知道哪一个是正确的,我扩展了URLClassLoader,并为public void addURLURL创建了一个公共方法,因此每次我都使用相同的类加载器,而不是为jar创建一个新的类加载器公共类TestClassLoader扩展URLClassLoader{public TestClassLoader{supernew url[0];}public void addURLURL{super.addURLURL;}}这样做正确吗?这种方式有缺点吗?我猜一定是sun总是创建一个新类加载器的原因。注意,您也可以链接类加载器。为什么sun没有这样做是有原因的,这是一个糟糕的实现吗?