有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

(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) 个答案

  1. # 1 楼答案

    你能试试下面的代码吗

     URL audioFileUrl = MainClass.class.getClassLoader().getResource("audio/two.wav"");
     AudioInputStream audioIn = AudioSystem.getAudioInputStream(audioFileUrl);