IntelliJ / Java无法识别明显存在的文件。这是我的文件系统:
MODULE/resources/a.ttf
MODULE/resources/test.png
MODULE/src/test/Test.java
以下是我使用的代码:https://paste.ubuntu.com/p/pQxRXMF3wg/
我的代码的哪一部分不正确,我该如何解决?
答案 0 :(得分:0)
实际上答案实际上非常简单,因为它与@ KolyaSh的评论有关。在反编译我的JAR之后,我发现'resources'文件夹从未实际放入JAR文件中,因此我的代码首先不起作用。另一个问题是我尝试检索资源URL的方式。我尝试了ClassLoader.getSystemResource()
,但我更多地研究了为什么这不是解决方案。
解决方案是获取调用类的ClassLoader。我还写了一个方法来读取文件,看起来像这样:
Font.loadFont(getResource("a.ttf"), doubleValue);
/* NOTE: The string argument in the resource is the path of which the
file is located. If your file path is something like
'resources/fonts/a.ttf', please use 'fonts/a.ttf' as the string argument.
*/
public InputStream getResource(String path) {
URL url = this.getClass().getClassLoader().getResource(path);
try {
URLConnection c = url.openConnection();
return c.getInputStream();
} catch (Exception e) {
e.printStackTrace();
}
}
为了给出一个直接的答案,我遗漏的概念是文件实际存储在jar中的方式,以及如何访问它。首先,你必须得到ClassLoader实例(不要使用它提供的静态方法),打开到URL路径的连接,获取InputStream,瞧,你有一个很好的,简单的方法来从一个内部加载任何文件编译JAR。
再次感谢所有帮助回答此问题的人!希望这能解决所有问题。
答案 1 :(得分:-1)
请尝试以下步骤:
希望这会有所帮助。
玩得开心! =)