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

2022-09-01 12:14:44

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

我知道这可以在Visual Studio世界中完成,但我非常不熟悉如何在Java / Eclipse IDE中做到这一点。作为题外话,我如何让Eclipse将项目创建为可执行文件,以便可以启动它?

任何帮助都非常感谢。

马克

更新 1:

根据BalusC的回应,我想分享解决我的问题所需的代码。我的类位于“”包下,然后将图像文件放在包“”下。这一切都是在Eclipse中完成的,目的是将图像导入到项目中。Viking.TestViking.Test.Resources

  1. 我通过右键单击导入源的Project -> Import -> General/File System来导入图像。
  2. 已选择包含要导入的图像的文件夹
  3. 为“进入文件夹”参数选择了“”Project/src/Viking/Test/Resources
  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 ) {  }

答案 1

只需将这些资源放在源/包结构中,然后使用 ClassLoader#getResource()getResourceAsStream() 通过完全限定的包路径将它们作为类路径获取或从类路径中获取。URLInputStream

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("/image.gif");
// ...

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

InputStream input = getClass().getResourceAsStream("image.gif");

作为题外话,我如何让Eclipse将项目创建为可执行文件,以便可以启动它。

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


答案 2

推荐