当前位置: 首页 > 面试题库 >

导出到罐子后无声音

屠建本
2023-03-14
问题内容

我的应用有问题。当我在Eclipse中运行应用程序时,声音播放良好,但是如果将应用程序导出到可运行的jar中,则声音将不起作用。

播放声音的方法:

public static synchronized void playSound() 
    {
            new Thread(new Runnable() 
            {
                // The wrapper thread is unnecessary, unless it blocks on the
                // Clip finishing; see comments.
                public void run() 
                {
                    try
                    {
                        Clip clip = AudioSystem.getClip();
                        AudioInputStream inputStream = AudioSystem.getAudioInputStream(getClass().getResourceAsStream("sound.wav"));
                        clip = AudioSystem.getClip();
                        clip.open(inputStream);
                        clip.start(); 
                    } 
                    catch (Exception e) 
                    {
                        System.err.println(e.getMessage());
                    }
                }
            }).start();
        }

哪里可能出错?


问题答案:

问题在于

AudioInputStream inputStream = AudioSystem.getAudioInputStream(getClass().getResourceAsStream("sound.wav"));

JAR文件中的getResourceAsStream出于任何原因均不起作用。因此,我将其替换为getResource

AudioInputStream inputStream = AudioSystem.getAudioInputStream(getClass().getResource("sound.wav"));

而且效果很好。



 类似资料:
  • 我有一个Java项目在Eclipse中运行良好,但当我将其导出到可运行的Jar文件(选择“将所需库打包到Jar”时)时,我会遇到以下错误: 还有StartGui的代码。doCmd(StartGui.java:94)看起来像这样: 我假设这个空指针异常是因为它无法定位图标,但我不完全理解为什么它会在eclipse中完美运行。 提前感谢善良的人们。

  • 我在容器中运行SpringBoot的一大组服务上工作。我们构建一个“Spring Boot Jar”并用“java -jar”执行它作为容器中的启动脚本。 我被要求实现一些概念上看起来很简单的东西,但我发现它可能相当粗糙。 需要发生的是,脚本需要检查映射卷中的特定 jar 文件,如果存在,请使用增强的类路径(包括其他 jar)运行Spring启动服务。 我意识到这非常混乱,因为当你用“java -

  • 我在经营一个Kafka制作人。我已经在yml文件中配置了密钥库位置,并在eclipse中运行时获取了它。但是当代码作为jar运行时,它无法找到密钥库位置。如何解决这个问题。 这是我的yml档案。 我得到以下错误: JAVA木卫一。FileNotFoundException:类路径资源[es-cert.jks]无法解析为绝对文件路径,因为它不位于文件系统:jar:file:/u01/home/app

  • 我正在尝试导出可运行的文件,但每次我这么做时,它都会说,“VM参数将不是可运行jar的一部分。在启动jar时,可以在命令行上传递参数。” 有人知道怎么修吗?

  • 在过去的6个月里,我一直在从repl运行我的Clojure应用程序。 也就是说,每当我想运行应用程序时,我都会加载一个clojure repl,然后输入:(加载文件“src/run.clj”)。。。它运行我的应用程序。 然后,clojure加载了我所有的*。clj文件,编译并运行。 我最近换了莱恩。我想“提前编译/打包”我的代码,这样我就可以得到一个带有Main方法的jar,并通过“java…”直

  • 知道为什么吗 工作,但是双击罐子会给一个 错误?清单被正确放置,双击直到最近还在工作,但突然之间它给出了这个错误。我不确定我做了什么改变。 编辑: 我用来创建jar的命令是(在cmd中): Main是包文件的一部分。