我最近开始使用Fantom。我有一个jar文件,其中包含一个资源(在本例中是svg图像)。我可以很好地使用jar中的类,但是资源不会加载:Thread.currentThread().getContextClassLoader().getResourceAsStream("name")返回null。当我在仅限Java的上下文中使用这个完全相同的jar时,它可以很好地找到资源。
任何关于如何调试甚至解决这个问题的建议都将不胜感激。
发布于 2011-07-03 22:32:42
错误的部分是Thread.currentThread().getContextClassLoader()
Java:AnyClassFromJar.class.getClassLoader()工作
幻象:Class.forName("AnyClassFromJar").getClassLoader()应该可以工作
发布于 2011-02-06 00:41:25
一定要放在罐子里吗?如果你直接把它放在你的Pod里,你可以像这样使用access文件:
file := Pod.find("myPod").file(`/path/to/file.ext`)发布于 2011-07-03 20:25:47
如果我没记错的话,.jar文件不能被访问以获取资源,但是由于.jar文件只不过是带有花哨扩展名的Zip文件,所以你可以像这样打开它们。
下面是我的示例文件夹结构(但任何结构都可以)。
ExampleDir
|
+--- TestZip.fan
+--- testOpen.jar
|
+--- META-INF
| +--- email.png
| ...
|...然后打开testOpen.jar,如下所示:
class TestZip
{
static Void main(Str[] args)
{
jar := Zip.open(File(`testOpen.jar`))
png := jar.contents[`/META-INF/email.png`].readAllBuf
jar.close
}
}编辑:在幻影板上对此进行了讨论,似乎这个例子应该可以工作。
buff := Interop.toFan(Class.forName("net.testOpen.Foo").getClassLoader().getResourceAsStream("email.png")),4096)https://stackoverflow.com/questions/4247454
复制相似问题