【问题标题】:Embedding resources (images, sound bits, etc) into a Java project then use those resources将资源(图像、声音位等)嵌入到 Java 项目中,然后使用这些资源
【发布时间】:2010-09-15 20:54:42
【问题描述】:

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

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

非常感谢任何帮助。

标记

更新 1:

基于BalusC's response,我想分享解决问题的代码。我的课程在“Viking.Test”包下,然后我将图像文件放在“Viking.Test.Resources”包下。这一切都在 Eclipse 中完成,以将图像导入到项目中。

  1. 我通过右键单击导入源的项目 -> 导入 -> 常规/文件系统来导入图像。
  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 ) {  }

【问题讨论】:

    标签: java eclipse resources imagesource


    【解决方案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 文件

    【讨论】:

    • 感谢 BalusC,让它工作。一件奇怪的事情是右键单击 Java 项目 -> 导出 -> 可运行的 JAR 文件在一台机器上工作,但在另一台机器上却不行。不工作的机器我可以发出命令“java -jar MyJarFile.jar”它会运行。在导出过程中,如果我选择“将所需的库打包到生成的 JAR 中”,我会收到错误消息“找不到主类。程序将退出”。需要弄清楚为什么,我根本不明白。
    • 自 Eclipse 3.5 以来有些事情发生了变化。哪个版本在机器上运行?最简单的方法是使用 Ctrl+F11 执行一次,以便将其保存为最后一个 Run As 配置,您可以在导出期间选择该配置。
    • 好的,我在家里运行 Java v6 Update 21 和 Java v6 Update 20,但没有成功。我不明白为什么会引起任何担忧,但我卸载了 Java 并重新安装了 Java。重新安装 Java 后,我能够双击并执行 jar 文件。凉爽的。我不确定是什么问题。现在另一个问题是,即使我关闭窗口,“javaw.exe”的实例仍在运行。男孩,我必须习惯这个 Java 东西。感谢 BalusC 的所有帮助!
    • 好的,关于“javaw.exe”的实例仍在执行的事实,我发现我需要按照here 的描述调用 System.exit(0) 函数。跨度>
    猜你喜欢
    • 2020-12-07
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多