【发布时间】:2025-12-26 19:35:18
【问题描述】:
在这里的第一篇文章,我希望我已经充分形成了这个问题。我的项目在作为项目在 netbeans 内部运行时在类路径上找到资源文件,但是当我在 netbeans 外部运行 jar 时,它找不到资源(我已经检查过,是的,它们被放入 jar 中。 )
我已经尝试了我的代码的 .getResource() 和 .getResourceAsStream() 版本。它们在作为 Maven 项目在 netbeans 内部运行时都成功了,但是当我删除 jar 并在 netbeans 外部运行它时找不到这些资源。
这是我的代码的 sn-p,以及我添加资源的 pom 文件中的 sn-p。当在 netbeans 中作为项目运行时,这一切都有效,但当我在其他地方运行 jar 时就不行。找不到资源。
... ...
String wholeFile = "";
try {
BufferedReader objReader = new BufferedReader(
new java.io.InputStreamReader(
getClass().getResourceAsStream( sqlFileName )
)
);
StringBuilder sb = new StringBuilder();
String strCurrentLine;
while ( (strCurrentLine = objReader.readLine()) != null ) {
sb.append( strCurrentLine );
sb.append( System.getProperty("line.separator") );
}
wholeFile = sb.toString();
...或者,最好是...
wholeFile = java.nio.file.Files.readString(
java.nio.file.Paths.get(
getClass().getClassLoader().getResource( sqlFileName ).toURI()
)
);
// Split that file into individual create
// table strings contained in the file.
// Slit on two newlines.
String newLine = System.getProperty("line.separator");
String[] tables = wholeFile.split( newLine + newLine );
... ...
这是我添加到 pom 中的内容。但这只有在 netbeans 中运行时才能解决。为什么?我在这里的 Maven 设置缺少什么?在 netbeans 之外...可执行 jar 不会像在 netbeans 中运行时那样找到这些资源文件。
提前致谢。我希望我的问题很清楚。
<resources>
<resource>
<directory>src/my-resources</directory>
<includes>
<include>**/*.txt</include>
<include>**/*.jpg</include>
</includes>
</resource>
</resources>
【问题讨论】:
-
比较一下 sqlFileName 的值和 *.jar 的内容会很有趣。
-
"CreateTables.txt" "BasicInserts.txt" ... 并且在 jar 中,它们位于根级别。
-
"/CreateTables.txt" 也可以工作......但在 netbeans 之外......都不工作。
-
在 jar ... com 和 META-INF 以及 CreateTables.txt 和 BasicInserts.txt 内。他们肯定会进入罐子。