(Java)在URL和文件之间使用。jar文件
我正在用java编写一个相当大的程序。它有很多文件,包括图像、音频和文本文件。当我在Eclipse上运行时,我使用的代码工作正常。然而,我总是很难从网络上访问它们。独立的jar文件
我将给你一个我如何编写代码的例子
对于BuffereImage,我采用以下方式:
File bgImgFile = new File("images/nature.jpg");
BufferedImage bgImg = ImageIO.read(bgImgFile);
对于AudioInputStream,我有:
File soundFile = new File("audio/two.wav");
AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile);
对于文本文件,我有:
FileReader reader = new FileReader("scripts/0.txt");
当我在Eclipse中时,这一切都很好。然而,我正在考虑我想为发行做些什么。我想喝一杯。可以在任何地方运行的jar文件,并且不需要与包含这些文件的文件夹位于同一目录中。我以前做过,效果很好
这就是我试图为图像所做的:
URL bgFileUrl = MainClass.class.getClassLoader().getResource("images/nature.jpg");
File bgImgFile = new File(bgFileUrl.getFile());
BufferedImage bgImg = ImageIO.read(bgImgFile);
我为音频和文本文件做了类似的事情。然而,即使我尝试了不同的组合,将文件本身放在同一个目录中,在普通文件名前面加一个斜杠,等等,都没有效果。我希望能够在中包含这些文件。jar文件,所以我不必运行。从该特定文件夹中删除jar
有一件事我不明白,当我打开门的时候。jar文件使用我的原始代码制作,图像、音频和脚本文件夹都在那里,它们有我的文件。他们在那里。然而,当我试图运行它时,我得到了一个IIOException(“无法读取输入文件!”)还有一个NullPointerException,尽管我使用的代码与以前相同
如何使文件包含在中。jar文件,这样它就可以自己运行了
谢谢你的帮助
# 1 楼答案
你能试试下面的代码吗