如何在 jar 中导入文件?
How import a file in a jar?
我有这个项目,它有这个结构
Home
graphics
field.txt
example.java
我需要在 jar 中的 example.java 中加载 field.txt 并且我使用:
getClass().getClassLoader().getResource("field.txt").toUri();
但是这个代码给了我 "Null Pointer exception"。任何人都可以帮助我吗?
要读取文件,它必须位于 class 路径中,您可以将文件放在包含 .class 文件的文件夹中,或者将其添加到 class 路径中 java -cp 选项。
example.class.getResource(“/graphics/field.txt“);
class 应该属于同一个 jar。对于 Class.getResource 一个相对的“field.txt”是可能的(同一个包)。使用 ClassLoader 寻找所有 class 路径的绝对路径:“graphics/field.txt“。
要立即读取(从不写入)使用 getResourceAsStream
或 getResource
的 URI。可以在 URI 上使用路径。 Files.copy(...)
.
一个人不能至少不应该)写一个资源文件(因为它可以驻留在 jar 中 jar:file://...
;jar 甚至可能是密封的;资源可能由 jvm 缓存)。将其保留为只读模板。从不 File
.
一种技术是在 System.getProperty("user.home")
中创建一个名为目录的应用程序并将模板复制到那里。
问题不在于您的代码,而在于您如何构建和打包 jar 文件。您必须说明您目前是如何构建 jar 的(使用 ant、maven、eclipse 等?)。
许多文章也会建议您将资源与源代码分开 (.java),并且许多 IDE 会通过允许您将文件夹标记为资源文件夹。即使是 maven 也允许您自定义它。
请参阅以下文章:
- How to package resources in Jar properly
- 使用maven和netbeans,真的很简单:https://coderwall.com/p/d_cvrq/how-to-package-non-java-code-files-resources-in-a-jar-with-maven,或者
- use maven to pack javascript files in Jar?
我有这个项目,它有这个结构
Home
graphics
field.txt
example.java
我需要在 jar 中的 example.java 中加载 field.txt 并且我使用:
getClass().getClassLoader().getResource("field.txt").toUri();
但是这个代码给了我 "Null Pointer exception"。任何人都可以帮助我吗?
要读取文件,它必须位于 class 路径中,您可以将文件放在包含 .class 文件的文件夹中,或者将其添加到 class 路径中 java -cp 选项。
example.class.getResource(“/graphics/field.txt“);
class 应该属于同一个 jar。对于 Class.getResource 一个相对的“field.txt”是可能的(同一个包)。使用 ClassLoader 寻找所有 class 路径的绝对路径:“graphics/field.txt“。
要立即读取(从不写入)使用 getResourceAsStream
或 getResource
的 URI。可以在 URI 上使用路径。 Files.copy(...)
.
一个人不能至少不应该)写一个资源文件(因为它可以驻留在 jar 中 jar:file://...
;jar 甚至可能是密封的;资源可能由 jvm 缓存)。将其保留为只读模板。从不 File
.
一种技术是在 System.getProperty("user.home")
中创建一个名为目录的应用程序并将模板复制到那里。
问题不在于您的代码,而在于您如何构建和打包 jar 文件。您必须说明您目前是如何构建 jar 的(使用 ant、maven、eclipse 等?)。
许多文章也会建议您将资源与源代码分开 (.java),并且许多 IDE 会通过允许您将文件夹标记为资源文件夹。即使是 maven 也允许您自定义它。
请参阅以下文章:
- How to package resources in Jar properly
- 使用maven和netbeans,真的很简单:https://coderwall.com/p/d_cvrq/how-to-package-non-java-code-files-resources-in-a-jar-with-maven,或者
- use maven to pack javascript files in Jar?