所以我有 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.getResource
或 ClassLoader.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/