【问题标题】:Not able to load resources from classpath无法从类路径加载资源
【发布时间】:2020-11-02 18:09:06
【问题描述】:

我构建了这个应用程序并尝试迁移到移动/原生桌面。在移动和本机中,我从类路径加载资源时出错。桌面版错误:

Caused by: java.lang.NullPointerException
    at org.fxapps.alphabet.AlphabetFX.bulkDetailsImages(AlphabetFX.java:178)

指的是这一行:https://github.com/jesuino/alphabetfx/blob/master/alphabetfx/src/main/java/org/fxapps/alphabet/AlphabetFX.java#L178

但是,请注意我不能同时加载单个文件,它返回 null。

查看我的项目:https://github.com/jesuino/alphabetfx

我注意到使用 adb 的 android 应用出现了同样的错误。

尝试了不同的方法:

  • 使用最新版本的胶子
  • 将所有内容放在同一个项目中

另请注意,它仅适用于 Java 本地。我什至无法在根类路径 (/details) 上加载文件。

我有同款app,效果很好:https://github.com/jesuino/battleship-game

这可能是因为我的类路径中有太多资产吗?还是有某种缓存?我可以在调试日志中看到它处理了我的大部分资产。

您可以通过以下方式重现错误:

  • 使用mvn clean install 构建项目
  • 然后进入alphabetfx-app并运行mvn client:build client:package
  • 尝试运行可执行文件:./target/client/x86_64-linux/AlphabetFXApp

请帮忙!

编辑:

正如 Jose 在 Twitter[1] 中指出的,列出来自 JAR 或本机位(没有 FS)的资源将不起作用,因此我使用了一个名为“details.txt”的文件。但是,当我尝试阅读它时,我仍然得到一个空值。我将继续使用这种方法,并在找到它时使用我的解决方案进行更新。

[1]https://twitter.com/JPeredaDnr/status/1323348851345002502

【问题讨论】:

标签: gluon gluon-mobile gluon-desktop


【解决方案1】:

我找到了解决办法!

这是 graalvm 没有将我的文件复制到本机映像。看到这个:

https://github.com/oracle/graal/blob/master/substratevm/Resources.md

默认配置不会将类路径中的所有文件都包含到本机映像中。我必须做的是重命名我的文件以获得支持的扩展名,我使用“.dat”,因为“.txt”不受支持。查看默认支持的资源扩展列表:

文件:${App}/target/client/x86_64-linux/gvm/resourceconfig-x86_64-linux.json

{
  "resources": [
    {"pattern": ".*\\.png$"},
    {"pattern": ".*\\.jpg$"},
    {"pattern": ".*\\.jpeg$"},
    {"pattern": ".*\\.gif$"},
    {"pattern": ".*\\.bmp$"},
    {"pattern": ".*\\.ttf$"},
    {"pattern": ".*\\.raw$"},
    {"pattern": ".*\\.xml$"},
    {"pattern": ".*\\.fxml$"},
    {"pattern": ".*\\.css$"},
    {"pattern": ".*\\.gls$"},
    {"pattern": ".*\\.json$"},
    {"pattern": ".*\\.dat$"},
    {"pattern": ".*\\.license$"},
    {"pattern": ".*\\.frag$"},
    {"pattern": ".*\\.vert$"},
    {"pattern": ".*\\.obj$"}
  ]
}

【讨论】:

  • 默认情况下不包含资源,因为静态代码分析需要包含哪些配置,因为名称只能在运行时使用。配置是一个 json 文件,就像您展示的那样,您绝对可以创建/编辑它以匹配 .txt 文件。 github.com/oracle/graal/blob/master/substratevm/Resources.md甚至以txt为例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-22
  • 1970-01-01
  • 2011-03-27
  • 2010-12-29
  • 2010-10-26
  • 2020-09-02
  • 1970-01-01
相关资源
最近更新 更多