首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Fantom在jar中找不到资源?

为什么Fantom在jar中找不到资源?
EN

Stack Overflow用户
提问于 2010-11-23 00:05:54
回答 4查看 354关注 0票数 2

我最近开始使用Fantom。我有一个jar文件,其中包含一个资源(在本例中是svg图像)。我可以很好地使用jar中的类,但是资源不会加载:Thread.currentThread().getContextClassLoader().getResourceAsStream("name")返回null。当我在仅限Java的上下文中使用这个完全相同的jar时,它可以很好地找到资源。

任何关于如何调试甚至解决这个问题的建议都将不胜感激。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-03 22:32:42

错误的部分是Thread.currentThread().getContextClassLoader()

Java:AnyClassFromJar.class.getClassLoader()工作

幻象:Class.forName("AnyClassFromJar").getClassLoader()应该可以工作

票数 1
EN

Stack Overflow用户

发布于 2011-02-06 00:41:25

一定要放在罐子里吗?如果你直接把它放在你的Pod里,你可以像这样使用access文件:

代码语言:javascript
复制
file := Pod.find("myPod").file(`/path/to/file.ext`)
票数 2
EN

Stack Overflow用户

发布于 2011-07-03 20:25:47

如果我没记错的话,.jar文件不能被访问以获取资源,但是由于.jar文件只不过是带有花哨扩展名的Zip文件,所以你可以像这样打开它们。

下面是我的示例文件夹结构(但任何结构都可以)。

代码语言:javascript
复制
ExampleDir
 |
 +--- TestZip.fan
 +--- testOpen.jar
       |
       +--- META-INF
       |     +--- email.png
       |     ...
       |...

然后打开testOpen.jar,如下所示:

代码语言:javascript
复制
class TestZip
{
  static Void main(Str[] args)
  {
    jar := Zip.open(File(`testOpen.jar`))
    png := jar.contents[`/META-INF/email.png`].readAllBuf
    jar.close
  }
}

编辑:在幻影板上对此进行了讨论,似乎这个例子应该可以工作。

代码语言:javascript
复制
buff := Interop.toFan(Class.forName("net.testOpen.Foo").getClassLoader().getResourceAsStream("email.png")),4096)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4247454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档