gpt4 book ai didi

java - 运行 java jar 文件及其使用的文件路径。 (Windows 7 和 Windows 2008 服务器)

转载 作者:行者123 更新时间:2023-11-30 07:56:58 26 4
gpt4 key购买 nike

我开发了一个小型java应用程序并将其导出到jar文件(形式eclipse)。在此应用程序中,我使用 xml 文件名从以下位置读取输入数据:

private static final String INPUT_FILE_NAME = "./tasks.xml";

............

//read input tasks queue
XMLDecoder decoder = null;
try {
decoder = new XMLDecoder(new BufferedInputStream(
new FileInputStream(INPUT_FILE_NAME)));
searchTasksQueue = (BlockingQueue<SearchTask>) decoder.readObject();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (decoder != null) {
decoder.close();
}
}

当我运行 jar 文件时,我将任务文件与 jar 放在同一文件夹中。在 Windows 7 下一切正常。尽管当我在 Windows 2008 服务器下执行相同操作时,我得到:

C:\Users\Administrator>java -jar c:\scraper\scraper.jar
java.io.FileNotFoundException: .\tasks.xml (The system cannot find the file spec
ified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at bmw.scraper.Starter.main(Starter.java:40)

哪里出错了?要在 Windows 2008 服务器下运行此程序,需要检查什么?

附注

  • 在我的 Win 7 java 版本“1.8.0_45”上
  • 在 win 2008 服务器 Java 版本“1.8.0_60”上(通过 RDP 客户端运行)

最佳答案

如果您的文件位于 jar 文件夹中,则使用 Classloader 加载您的文件。

如下所示

InputStream in = this.getClass().getClassLoader().getResourceAsStream(fileName);

而不是

decoder = new XMLDecoder(new BufferedInputStream(
new FileInputStream(INPUT_FILE_NAME)));

如果您要从外部加载文件,则可以使用 fileInputStream。

检查此解决方案是否适合您。

关于java - 运行 java jar 文件及其使用的文件路径。 (Windows 7 和 Windows 2008 服务器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32532833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com