如何在JavaSwing中提供资源的路径

如何在JavaSwing中提供资源的路径,java,swing,javafx,Java,Swing,Javafx,在javafx中,要给出资源的路径,例如:-图像,我们可以执行以下操作:- ImageView imgView_btnEndCall = new ImageView(new Image("/clientgui/image/callend.png")); 但是为了给swing中的资源提供路径,下面的代码可以工作 FileInputStream fis = new FileInputStream("src/soundtest/sound/sound.wav"); 我发现的不同之处在于,有必要将“

在javafx中,要给出资源的路径,例如:-图像,我们可以执行以下操作:-

ImageView imgView_btnEndCall = new ImageView(new Image("/clientgui/image/callend.png"));
但是为了给swing中的资源提供路径,下面的代码可以工作

FileInputStream fis = new FileInputStream("src/soundtest/sound/sound.wav");

我发现的不同之处在于,有必要将“src”置于摇摆状态。当我从dist文件夹运行jar文件时,swing程序不起作用,但javafx程序起作用。问题是因为JAR文件压缩了项目,包括所有的包和文件。当javafx程序试图访问某些资源时,它能够访问clientgui文件夹中image文件夹内的callend.png文件。但是swing应用程序无法访问,因为我们在代码中给出了“src”文件夹。如何解决这个问题。如何在swing中包含资源目录,以便jar文件可以访问资源。

不要使用
FileInputStream
,请使用
ClassLoader
,例如

getClass().getResourceAsStream("sound/sound.wav");
这将从jar中包含的目录结构加载文件。创建
jar
后,
src
文件夹将不再存在,它们将成为一种嵌入式资源(感谢@andrewhompson的流行语)


阅读此问题的更多信息:

不要使用
FileInputStream
,使用
类加载器,例如

getClass().getResourceAsStream("sound/sound.wav");
这将从jar中包含的目录结构加载文件。创建
jar
后,
src
文件夹将不再存在,它们将成为一种嵌入式资源(感谢@andrewhompson的流行语)


阅读此问题的更多信息:

不要使用
FileInputStream
,使用
类加载器,例如

getClass().getResourceAsStream("sound/sound.wav");
这将从jar中包含的目录结构加载文件。创建
jar
后,
src
文件夹将不再存在,它们将成为一种嵌入式资源(感谢@andrewhompson的流行语)


阅读此问题的更多信息:

不要使用
FileInputStream
,使用
类加载器,例如

getClass().getResourceAsStream("sound/sound.wav");
这将从jar中包含的目录结构加载文件。创建
jar
后,
src
文件夹将不再存在,它们将成为一种嵌入式资源(感谢@andrewhompson的流行语)


阅读此问题的更多信息:

多亏了durron597,我的代码才起作用。正如我在问题中提到的,问题是jar文件没有src文件夹,无法访问我在问题中提到的资源。使用ClassLoader获取资源解决了这个问题。这是我的最终代码

AudioStream audio = new AudioStream(getClass().getResourceAsStream("sound/sound.wav"));
AudioPlayer.player.start(audio);
在这里,包名是soundtest,包内还有另一个名为sound的文件夹,其中有一个wav文件sound.wav

soundtest
     |-sound
         |-sound.wav

多亏了durron597,我的代码成功了。正如我在问题中提到的,问题是jar文件没有src文件夹,无法访问我在问题中提到的资源。使用ClassLoader获取资源解决了这个问题。这是我的最终代码

AudioStream audio = new AudioStream(getClass().getResourceAsStream("sound/sound.wav"));
AudioPlayer.player.start(audio);
在这里,包名是soundtest,包内还有另一个名为sound的文件夹,其中有一个wav文件sound.wav

soundtest
     |-sound
         |-sound.wav

多亏了durron597,我的代码成功了。正如我在问题中提到的,问题是jar文件没有src文件夹,无法访问我在问题中提到的资源。使用ClassLoader获取资源解决了这个问题。这是我的最终代码

AudioStream audio = new AudioStream(getClass().getResourceAsStream("sound/sound.wav"));
AudioPlayer.player.start(audio);
在这里,包名是soundtest,包内还有另一个名为sound的文件夹,其中有一个wav文件sound.wav

soundtest
     |-sound
         |-sound.wav

多亏了durron597,我的代码成功了。正如我在问题中提到的,问题是jar文件没有src文件夹,无法访问我在问题中提到的资源。使用ClassLoader获取资源解决了这个问题。这是我的最终代码

AudioStream audio = new AudioStream(getClass().getResourceAsStream("sound/sound.wav"));
AudioPlayer.player.start(audio);
在这里,包名是soundtest,包内还有另一个名为sound的文件夹,其中有一个wav文件sound.wav

soundtest
     |-sound
         |-sound.wav

到部署时,这些资源很可能会成为一种资源。在这种情况下,必须通过
URL
而不是
File
访问资源。有关形成
URL
的方法,请参见标签。在部署时,这些资源可能会成为一个新的资源。在这种情况下,必须通过
URL
而不是
File
访问资源。有关形成
URL
的方法,请参见标签。在部署时,这些资源可能会成为一个新的资源。在这种情况下,必须通过
URL
而不是
File
访问资源。有关形成
URL
的方法,请参见标签。在部署时,这些资源可能会成为一个新的资源。在这种情况下,必须通过
URL
而不是
File
访问资源。有关形成
URL
的方法,请参阅标签的。