Java 作为可执行jar文件的文件-声音/图片不';无法使用gui按钮

Java 作为可执行jar文件的文件-声音/图片不';无法使用gui按钮,java,image,user-interface,audio,wav,Java,Image,User Interface,Audio,Wav,是的,我曾研究过在线stackflow,我相信这是一个地方。他们的问题是“声音/音频”和“图片”不能从可执行jar文件播放 wav文件在jar文件中…我使用winrar进行检查 我在命令提示符下运行,声音无法播放。其中一个错误是: java.io.FileNotFoundException:C:\Users\Bijan\Desktop\Sounds\SexySounds1.wav(系统找不到指定的路径) 等等…我还有一件事要补充。当只使用来自可执行jar文件的图片时,图片实际上在按钮上起作用,但

是的,我曾研究过在线stackflow,我相信这是一个地方。他们的问题是“声音/音频”和“图片”不能从可执行jar文件播放

wav文件在jar文件中…我使用winrar进行检查

我在命令提示符下运行,声音无法播放。其中一个错误是:

java.io.FileNotFoundException:C:\Users\Bijan\Desktop\Sounds\SexySounds1.wav(系统找不到指定的路径)

等等…我还有一件事要补充。当只使用来自可执行jar文件的图片时,图片实际上在按钮上起作用,但当我尝试使用实现音频(wav)文件的按钮时,音频似乎不会播放

下面的代码设置optforjoptionpane,我只是把图像和音频(wav)文件放在那个框中。下面的代码用于gui程序的按钮“Relax”

JButton btnNewButton_1 = new JButton("Relax");
        btnNewButton_1.addActionListener(new ActionListener() {
            private int counter = 0;
            public void actionPerformed(ActionEvent e) {

                  String soundName1 = "Sounds/SexySounds1.wav";
                  String soundName1a = "Sounds/SexySounds2a.wav";
                  String soundName2 = "Sounds/HoShit.wav";
                  String soundName3 = "Sounds/SexySounds2.wav";
                  AudioInputStream audioInputStream = null;

                  JOptionPane opt = new JOptionPane(""); 
                  opt.setPreferredSize(new Dimension(210, 325));
                  final JDialog dialogBoxTitle = opt.createDialog("Sexy Woman");
                  try{
                  if(counter == 0){


                      Image pic = new ImageIcon(this.getClass().getResource("/SexyWoman.png")).getImage();
                      opt.setIcon(new ImageIcon(pic));
                      audioInputStream = AudioSystem.getAudioInputStream(new File(soundName1).getAbsoluteFile());


                  }
                  if(counter == 1){
                      Image pic = new ImageIcon(this.getClass().getResource("/Sexy Woman #2.jpeg")).getImage();
                        opt.setIcon(new ImageIcon(pic));
                        audioInputStream = AudioSystem.getAudioInputStream(new File(soundName2).getAbsoluteFile());
                        try {
                            Thread.sleep(500L);


                        } catch (InterruptedException e1) {

                            e1.printStackTrace();
                        }
                      }
                  if(counter == 2){
                      Image pic = new ImageIcon(this.getClass().getResource("/SexyWoman#3.jpeg")).getImage();
                        opt.setIcon(new ImageIcon(pic));
                        audioInputStream = AudioSystem.getAudioInputStream(new File(soundName1a).getAbsoluteFile());

                      }
                  if(counter == 3){
                      Image pic = new ImageIcon(this.getClass().getResource("/SexyWoman#4.jpeg")).getImage();
                        opt.setIcon(new ImageIcon(pic));
                        audioInputStream = AudioSystem.getAudioInputStream(new File(soundName3).getAbsoluteFile());

                      }
                  if(counter == 4){
                      Image pic = new ImageIcon(this.getClass().getResource("/Bijan's Picture.png")).getImage();
                        opt.setIcon(new ImageIcon(pic));
                      }} catch (UnsupportedAudioFileException e1) {

                            e1.printStackTrace();
                        } catch (IOException e1) {

                            e1.printStackTrace();
                        }
                        Clip clip = null;
                        try {
                            clip = AudioSystem.getClip();
                        } catch (LineUnavailableException e1) {

                            e1.printStackTrace();
                        }
                        try {
                            clip.open(audioInputStream);
                        } catch (LineUnavailableException e1) {

                            e1.printStackTrace();
                        } catch (IOException e1) {

                            e1.printStackTrace();
                        }
                        clip.start();
                        counter++;
                  new Thread(new Runnable()
                        {
                          public void run()
                          {
                            try{


                              Thread.sleep(1500);

                              }catch (InterruptedException e) {

                                e.printStackTrace();
                            }}}).start();
                                dialogBoxTitle.setVisible(true);

            }

            }
        );
比扬

PS:我想真正了解wav文件是否在jar文件中,以及何时运行命令提示符: 程序运行的java-jar“SuperMathBattler1a.jar”。但是,当我尝试使用以下命令查看jar文件的内容时:

jar tf SuperMathBattler1a.jar

然后给出了这个错误:

“jar”不能识别为内部或外部命令、可操作程序或批处理文件

我做了研究,写的是我必须改变“路径”,但这没有意义,因为当我运行它时,它工作了,所以路径应该是正确的,对吗?这台电脑可能真的有什么问题。我在命令提示符下运行时使用:

C:\Users\Bijan\Desktop>

然后输入jar tf filename.jar


jar文件在桌面文件夹中,但不查看jar文件的内容,而是在我输入--java-jar“filename.jar”时运行它。

我自己也是java初学者。使GUI成为可执行的.jar。我和你有同样的问题。我的GUI为不同的侦听器提供了不同的图片,为一个侦听器提供了.wav。我的可执行文件.jar不会显示或播放它们。没人告诉我的,我只是做了个假设就知道了。jar只是“保存”这些文件的路径,但文件本身必须与jar文件包含在同一文件夹中。如果它们被分开,jar将在没有它们的情况下执行

例如: 我在JCreator中运行所有内容的原始类文件夹中创建了原始的.jar。.jar按预期运行,因为所有图片和.wav都在该文件夹中

我将.jar复制并粘贴到桌面上的一个新文件夹中。点击它运行,它运行时没有图片或wav

我将图片和.wav复制并粘贴到同一个.jar专用文件夹中,它完全按照我想要的图片、音乐和所有内容运行

作为一名java初学者,我从中学到了一件很酷的事情,那就是我可以创建一个具有通用名称的文件路径,但是在不同的.jar文件夹中使用不同的图片来定制.jar。 例子: 在前面提到的同一个.jar中,我添加了一个监听器,以便在登录后在gui上设置一张friends face图片

代码中的路径已更改 friendsPic=新的图像图标(“friend.jpg”)

在我的“登录”侦听器中,我添加了If(logIn.equals(“Sarah”)| | logIn.equals(“Deena”)),然后将friendsPic添加到面板中

区别在于,我用这段代码制作了一个.jar。我将.jar复制到两个不同的文件夹中。我想送一个给我的朋友迪娜,另一个给莎拉。Deena的文件夹中有一个.jar和一个.jpg,标题是“friend”。Sarah的文件夹中有完全相同的.jar和一个名为“friend”的.jpg。jar不知道图片之间的区别,只是它有一个指向名为friend的文件的路径。我可以从各自的文件夹中运行这两个.jar。因为Deena的文件夹中有Deena的图片标签friend,所以她的罐子会显示她的图片。因为Sarah的文件夹中有她的照片标签friend,所以她的罐子会显示她的照片


我希望这会有所帮助,即使这不是一个更有经验的程序员能够给出的准确答案。

首先感谢您尝试帮助我。但我很困惑。因为在我让jar文件正常工作之后,我将把它转换成一个普通的.exe文件,这样双击就可以打开它。解释的方式我不确定,但我必须创建另一个jar文件,它只能作为新创建的文件夹中的可执行jar文件工作,但是如果我将其转换为.exe文件,它还会工作吗?我不确定。你能解释一下我该怎么做吗我很困惑,所以我添加了另一个文件夹和路径…你能不能再细分一下…这样我就可以在你写的另一个文件夹中创建一个jar文件,如果文件被分离,它将被执行,所以基本上你的逻辑是文件被分离,因此声音不会播放。但是这些图片确实有用。只是音频不起作用。它与gui按钮的按下有关。当我有预设的图片,而这些图片不是通过按下按钮来实现的时候,图片就会显示出来。当我使用图片本身并按下按钮时,图片工作。当我按下按钮使用音频时,音频似乎无法播放。我猜你指的是Sounds/SexySounds1.wav中的路径,对吗?项目文件夹的设置如下:AwesomeGuiRpg1a(项目名称)>AwesomeGuiRpg1a字符库(源文件夹)>awesomeGuirPG1Apackage(包)>包中有11个文件。java…在项目文件夹AwesomeGuiRpg1a中,我还有4个源文件夹--pic,声音,声音2,数据存储加载…所以我注意到当我创建jar文件时,它显示哪些文件被放入jar,它显示wav文件被放入jar。所以我假设wav文件都在jar文件中。路径是什么意思?你是说我