Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在eclipse中工作,但在可执行的_Java_Eclipse_Jar - Fatal编程技术网

Java 在eclipse中工作,但在可执行的

Java 在eclipse中工作,但在可执行的,java,eclipse,jar,Java,Eclipse,Jar,我只想把它放进一个罐子里工作,在Eclipse中没有问题,但罐子不播放音乐。我尝试了谷歌和stackoverflow的几种“解决方案” class Soundboard implements ActionListener { public Soundboard() { } @Override public void actionPerformed(ActionEvent ev) { if (ev.getSource() instanceof J

我只想把它放进一个罐子里工作,在Eclipse中没有问题,但罐子不播放音乐。我尝试了谷歌和stackoverflow的几种“解决方案”

class Soundboard implements ActionListener {

    public Soundboard() {
    }

    @Override
    public void actionPerformed(ActionEvent ev) {
        if (ev.getSource() instanceof JButton) {
            JButton b = (JButton) ev.getSource();
            // getClass().getSystemResource("images/SomeImage.png")
            String build = "sound/" + b.getText() + ".au";
            try {
                playMusic(new File(build));
            } catch (UnsupportedAudioFileException | IOException
                    | LineUnavailableException e) {
                e.printStackTrace();
            }
        }
    }

    private void playMusic(File file) throws UnsupportedAudioFileException,
            IOException, LineUnavailableException {
        AudioInputStream stream = AudioSystem.getAudioInputStream(file);
        AudioFormat format = stream.getFormat();
        DataLine.Info info = new DataLine.Info(Clip.class, format);
        Clip clip = (Clip) AudioSystem.getLine(info);
        clip.open(stream);
        clip.start();
    }
}

我怀疑当您创建jar时,资源文件被放在与您在Eclipse中构建时不同的目录中,因此您的代码看起来不正确。通过使用
jar-tvf myFile.jar检查jar目录结构,可以看到文件的位置

研究在jar中放置资源文件的位置,以便java代码能够找到它们

希望有帮助

编辑:当执行上面的jar命令时,您看到了什么?你应该看到类似的东西

     >jar -tvf soap-tcp.jar
     0 Thu Aug 21 05:05:26 BST 2014 META-INF/
  5118 Thu Aug 21 05:05:24 BST 2014 META-INF/MANIFEST.MF
     0 Thu Aug 21 05:05:22 BST 2014 META-INF/logmessages/
     0 Thu Aug 21 05:05:22 BST 2014 META-INF/loggerinfo/
     0 Thu Aug 21 05:05:22 BST 2014 org/
     0 Thu Aug 21 05:05:22 BST 2014 org/glassfish/
     0 Thu Aug 21 05:05:22 BST 2014 org/glassfish/webservices/
     0 Thu Aug 21 05:05:22 BST 2014 org/glassfish/webservices/transport/

仅在jar中包含目录和文件。这将告诉您打包过程将音频文件放在何处。

您可能应该使用类加载器将文件内容作为输入流加载。还要检查音频文件是否在jar中@Gábor Bakos 8分钟前

它起作用了!类加载器是丢失的东西


AudioInputStream=AudioSystem.getAudioInputStream(ClassLoader.getSystemResource(文件))

鉴于当前的信息,没有人可以帮助您。到底是什么不起作用?您可能应该使用
ClassLoader
将文件内容作为
InputStream
加载。还要检查音频文件是否在jar中。@jdv I.jar似乎找不到位于“sound/*.au”@GáborBakos中的声音文件。我应该在哪里添加类加载器?音频文件在罐子里!文件结构是:-声音-图像-(软件包)我在Windows上,用WinRAR打开它,它看起来和你的相似!问题是类加载器…你们应该让他把它作为答案发布,然后标记为“接受答案”。向上投票也没有坏处:)