将资源(图像,声音位等)嵌入到Java项目中然后使用这些资源

lor*_*hog 29 java eclipse resources imagesource

我已经搜索了一种在java项目中嵌入资源的方法(使用Eclipse v3.6.0),然后在控件中使用该嵌入式资源(例如JLabel).我见过从文件系统引用资源的方法.项目开发完成后,我想将该应用程序发布为可执行文件.应该注意,这些可执行文件将被部署/启动到Windows,*NIX和Linux平台.

我知道这可以在Visual Studio世界中完成,但是我很不熟悉如何在Java/Eclipse IDE中执行此操作.作为一个附带问题,我如何让Eclipse将项目创建为可执行文件以便可以启动它?

任何帮助是极大的赞赏.

标记

更新1:

根据BalusC的回复,我想分享我解决问题的代码.我的类在" Viking.Test" 的包下,然后我将图像文件放在包" Viking.Test.Resources"下.这都是在Eclipse中完成的,用于将图像导入到项目中.

  1. 我通过右键单击导入源的项目 - >导入 - >常规/文件系统导入图像.
  2. 选择包含要导入的图像的文件夹
  3. Project/src/Viking/Test/Resources'Into folder'参数选择" "
  4. 没有改变任何选项并点击"完成"

在源文件中我添加了以下代码以将图像插入到JLabel(LblLogo)中

try
{
  ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
  InputStream input = classLoader.getResourceAsStream(
    "Viking/Test/Resources/MyImage.jpg");
  Image logo = ImageIO.read(input);
  LblLogo = new JLabel( new ImageIcon( logo ) );
  LblLogo.setBounds(20, 11, 210, 93);
  getContentPane().add(LblLogo);
}
catch ( IOException e ) {  }
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 17

只要把这些资源在源/包的结构和使用ClassLoader#getResource()getResourceAsStream()获得它们的URLInputStream由完全限定包路径的类路径.

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("/image.gif");
// ...
Run Code Online (Sandbox Code Playgroud)

或者,如果它与当前类位于同一个包中,您也可以按如下方式获取它:

InputStream input = getClass().getResourceAsStream("image.gif");
Run Code Online (Sandbox Code Playgroud)

作为一个附带问题,我如何让Eclipse将项目创建为可执行文件,以便可以启动它.

右键单击Java项目>导出>可运行的JAR文件.