[英]Build native-image using graalvm from within gradle after jar is built by running Exec task
[英]GraalVM native-image how to read resource file from Jar
我有一個 jar 文件,其中包含一些文本文件,我正在嘗試將文件加載為:
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
它不能作為錯誤顯示:
[SUB] java.lang.NullPointerException
[Thu Aug 27 12:07:48 SGT 2020][INFO] [SUB] at java.io.Reader.<init>(Reader.java:167)
[Thu Aug 27 12:07:48 SGT 2020][INFO] [SUB] at hellofx.HelloFX.readFileAsStringFromJar(HelloFX.java:116)
[Thu Aug 27 12:07:48 SGT 2020][INFO] [SUB] at hellofx.HelloFX.test(HelloFX.java:107)
如果我嘗試將資源文件提取到類路徑src/main/resources
,那么它工作正常。
我的問題是,我們可以從 Jar 中讀取資源文件嗎(在GraalVM本機映像中運行時)? 有很多第三方 Java 庫正在讀取捆綁在同一個 Jar 中的資源文件,我們如何克服這個問題?
PS更新:
這確實是我的錯誤,與class.getResource()
和class.getClassLoader().getResource()
混淆。 一個在開頭需要斜杠,另一個不允許。 一旦我刪除了path
變量中的斜杠,它就可以正常工作。
您需要通過-H:IncludeResources=path
告訴原生圖像要包含哪些資源。 該值可以是正則表達式。
有關更多詳細信息,請參閱文檔: https : //github.com/oracle/graal/blob/master/substratevm/Resources.md
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.