当前位置: 首页 > 知识库问答 >
问题:

将所有文件打包到Jar-File后找不到文件,尽管它在Eclipse中工作

令狐宏伟
2023-03-14

所以我的程序终于在它的第一个版本中完成了。我可以在EclipseIDE中毫无问题地运行它,但一旦我将它打包到一个Jar文件中,它就找不到项目中某个文件夹中的文件(声明为源文件夹)。我已经知道,在编译过程中,文件夹结构会发生变化,我尝试过解决这个问题,但它不起作用,我不想坚持这样的解决方法
项目结构:

- src/main/java/
    + [my packages]
- resources/
     + configs/[some files]
     + languages/[some language files]
     + levelcards/[some images]

在我的程序中,我正在访问“配置”中的文件

new File("./resources/configs/[...]");

它工作得非常好,因为文件夹存在于项目中。但编译后就没有了,所以我用

new File("./configs/[...]");

但它也不起作用
不管我是在Eclipse中启动它还是直接通过JRE启动它,我都希望它能正常工作,尽管我不知道如何实现这一点。如果你能以任何方式帮助我,我将不胜感激<格雷戈

共有1个答案

戚祺
2023-03-14

eg:

假设有一个实用程序类,它将从文件中读取并作为字符串返回

class Utils{

public static String readFromFile(String filePath){
  InputStream inputStream=Utils.class.getResourceAsStream(filePath); //eg:- configs/temp_file.txt
/* Now once you get the InputStream there 
are lot of utility library to return as string */

String newLine = System.getProperty("line.separator");
 BufferedReader reader = new BufferedReader(
         new InputStreamReader(inputStream));
 StringBuilder result = new StringBuilder();
 for (String line; (line = reader.readLine()) != null; ) {
     if (result.length() > 0) {
         result.append(newLine);
     }
     result.append(line);
 }
 return result.toString();
}
}
 类似资料:
  • 我成功地将“libmynative.so”文件夹复制到armeabi文件夹 但我仍然得到以下错误 这是我的主要活动 }

  • 我有一个程序,必须从终端界面播放声音。 代码相当简单,如下所示: 该文件位于“我的源路径”中的“音乐”文件夹中。 当我在eclipse中运行程序时,所有工作都非常好。但是如果我将其导出到. jar文件中并在windows cmd中尝试它,我会收到这条消息 [编辑]音频文件确实已打包到中。jar,但它仍然不起作用。 是否有可能播放来自windows提示符的声音?如果没有,是否有这样的声音? 谢谢Si

  • 我有一个,具有以下依赖关系: 我尝试了几个其他版本,也从本地repo中删除了依赖项,并再次尝试,但没有帮助。会有什么问题?

  • 原本注释是要用的,但只要一打包就开始报错: Could not open requirements file: [Errno 2] No such file or directory: './requirements.txt' 报错很明确就是文件找不到,不过,文件是存在的,前面copy进去,为了确保文件存在: 如下强制修改成这样,用ls查看,文件存在 用一个相似结构的项目的dockerfile 结

  • 我正在使用Netbeans构建一个jar。当我按f6时,项目在NetBeans中运行良好。但是,如果我进入我的/dist/文件夹并尝试运行。jar,它就像打开一个。zip一样打开它。如果我尝试从命令行运行项目,我会得到“无法找到main Class”错误。但是,如果我浏览。jar并查看META-INF/MANIFEST.MF文件,我可以看到它确实描述了其中的一个主类。

  • 我使用SpringBootMaven插件将应用程序打包为jar文件。 它可以在Itellij IDE中找到直接运行的资源文件,但之后找不到资源文件,显示错误为: JAVA木卫一。FileNotFoundException:类路径资源[jmxremote.password]无法解析为绝对文件路径,因为它不位于文件系统:jar:file:/home/XXX/target/yyyy中。罐子/BOOT-I