2

最近、Fantomを使い始めました。リソース(この場合はsvgイメージ)を含むjarファイルがあります。jarのクラスは問題なく使用できますが、リソースが読み込まれませんThread.currentThread().getContextClassLoader().getResourceAsStream("name")。returns null。これとまったく同じjarをJavaのみのコンテキストで使用すると、リソースを問題なく見つけることができます。

この問題をデバッグまたは解決する方法についての提案をいただければ幸いです。

4

4 に答える 4

2

Does it have to be in a Jar? If you stick it directly in your Pod, you can use access files like this:

file := Pod.find("myPod").file(`/path/to/file.ext`)
于 2011-02-05T16:41:24.777 に答える
1

間違った部分はThread.currentThread().getContextClassLoader()

Java:AnyClassFromJar.class.getClassLoader()動作します

ファントム:Class.forName("AnyClassFromJar").getClassLoader()動作するはずです

于 2011-07-03T14:32:41.673 に答える
0

私の記憶が正しければ、.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
  }
}

編集: Fantom ボードでこれについて議論すると、この例は機能するはずです。

buff := Interop.toFan(Class.forName("net.testOpen.Foo").getClassLoader().getResourceAsStream("email.png")),4096)
于 2011-07-03T12:25:46.647 に答える