我需要将根“某物”传递给一段使用资源的代码。我知道这个“东西”不能是文件,因为这在 JAR 中不起作用。所以我传递了一个 URL。
在我开始使用 OneJar 之前,我将一个 URL 转换为
file:/some/path!/foo/bar/MyUrlSupplier.class
进入
file:/some/path!/foo/images/
并将其用作根 URL。有了 OneJar,我得到了
onejar:foo.bar.MyUrlSupplier.class
并将其转化为
onejar:foo.images
但无论我用这个 URL 做什么,都不起作用。我得到的最好的是由加载引起的堆栈跟踪new ImageIcon(url)
:
Uncaught error fetching image:
java.lang.ClassCastException: sun.misc.Launcher$AppClassLoader cannot be cast to com.simontuffs.onejar.JarClassLoader
at com.simontuffs.onejar.JarClassLoader.getByteStream(JarClassLoader.java:753)
at com.simontuffs.onejar.Handler$1.getInputStream(Handler.java:50)
at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:126)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:263)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:205)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:169)