Java 无法正确导出我的资源

标签 java eclipse

所以我有 2 个类文件夹,一个是 res,另一个是 lib。我的 res 文件夹还有另外两个子文件夹,一个包含图像,另一个包含声音。我的 lib 文件夹有 4 个其他 jar 文件和一个 native 文件夹。这一切都在 Eclipse 中工作,但是当我尝试将其导出为可运行的 jar 时,它不起作用。我不会认不出任何东西。

我要调用我正在使用的图像ImageIO.read(new File(imagePath));对于声音,我使用前面提到的外部库来加载和播放它们。

最佳答案

I am to call my images I am using ImageIO.read(new File(imagePath))

与您的标题相反,这不是 Eclipse 问题 - 这只是您代码中的一个错误,因为您的代码假定图像作为文件存储在文件系统中,而事实并非如此。

没有该图像的文件,因此不应使用新文件。您应该使用 Class.getResourceClassLoader.getResource - 或 getResourceAsStream 等效项。这样,它将从类本身加载的任何上下文加载资源,这适用于 jar 文件。例如,您可能有:

Image image = ImageIO.read(MyClass.getResource("foo.png"));

... 其中 foo.png 实际上与类位于相同的包结构中。或者:

Image image = ImageIO.read(MyClass.getResource("/images/foo/bar.png"));

其中 images 是由同一 ClassLoader 加载的 jar 文件之一的根目录中的文件夹。 (我们没有足够的信息来为您提供完整的代码,但这应该足以让您继续前进。)

关于Java 无法正确导出我的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22284879/

相关文章:

java - 在 Java 中使用 GPG 和 GnuPG 进行数字签名验证

java - 执行android应用程序时出现错误

java - 如果不先最小化 Eclipse,则无法从 Eclipse 窗口转到任何其他窗口。有什么解决办法吗?

java - 尝试创建新的数据库 Play Framework ebean mysql 时出现错误

c# - 为具有到期时间的类建议一个名称

Java 1.6 : javax. xml.transform.Transformer 拒绝缩进包含换行符的 xml 字符串

java - Google AdMob AdView 始终为空

java - Android:Intent Extras 未通过 Activity 上下文之外的 startActivity() 传递

eclipse - 如何使用Eclipse从Windows运行Map Reduce程序

android - eclipse监控android的网络流量