0

我正在为一些串行端口通信创建一个 Java 应用程序,并且在应用程序的文件夹中,我有两个资源需要在运行时存在。第一个是用作启动屏幕的图像,另一个是需要在程序启动时读取的配置文件。

这是 Linux 中“tree”命令输出的精简版本,我需要引用的两个文件是“commandSet.config”和“splash-screen2.png”

.
├── bin
│   ├──...
├── commandSet.config
├── app-manifest.txt
├── splash-screen2.png
└── src
    ├── events
    │   └── InterfaceEvents.java
    ├── models
    │   ├── Command.java
    │   └── Phone.java
    ├── operations
    │   ├── Application.java
    │   ├── ...
    └── views
        ├── CallDialog.java
        ├── SplashScreen.java
        └── Window.java

我目前在以下几行中引用:

BufferedReader in = new BufferedReader(new FileReader("commandSet.config"));

JLabel image = new JLabel(new ImageIcon("splash-screen2.png"));

当我从 Eclipse 运行它时,这可以正常工作,但是一旦我导出到可运行的 JAR,文件就不会移动,因此不会被正确引用。我尝试将它们移动到“src”文件夹中,这导致它们被存档在 JAR 中,但我仍然无法引用它们。

我对导出 Java 项目的概念还很陌生,所以也许我错过了一些明显的东西。如果有人可以向我展示执行此操作的最佳方法以及未来项目文件系统的最佳方法,我将不胜感激。干杯!

4

3 回答 3

3
 InputStream in = this.getClass().getClassLoader().getResourceAsStream("splash-screen2.png");  
byte[] buffer = new byte[in.available()];
in.read(buffer);  
ImageIcon icon = new ImageIcon(buffer);
于 2012-07-16T12:09:57.667 回答
1

您无法像在文件系统中那样访问该文件。

从您的上下文中使用getResourceAsStream()类加载器从 CLASSPATH 中读取它。

于 2012-07-16T12:04:57.647 回答
0

好的,我设法解决了这个问题,并认为我将来会为其他人提供答案。我基本上遵循“duffymo”的指导方针,这就是我所做的:

  • 用我的资源创建了一个 JAR。
  • 将该 JAR 放在项目的根目录中。
  • 使用 Eclipse 将该 JAR 添加到构建路径。
  • 使用 getResourceAsStream(" /nameOfFile.ext ") 获取我的资源的流。

干杯!

于 2012-07-17T09:49:05.337 回答