gpt4 book ai didi

macos - 从 .jar 制作 MacOS 应用程序包时出现 NoClassDefFoundError

转载 作者:太空宇宙 更新时间:2023-11-04 12:08:59 25 4
gpt4 key购买 nike

我已经花了几个小时试图解决这个问题。我有一个 java 程序,我将其导出为 .jar。这个 jar 工作正常,但我想a) 将其捆绑到 MacOS 应用程序 (.app)b) 在应用程序中包含 JRE。我用过packr https://github.com/libgdx/packr为了达成这个。然而,packr 制作的应用程序存在一些问题。当我启动它时我得到这个:

    Exception in thread "Thread-1" java.lang.NoClassDefFoundError: com/sun/media/sound/JDK13Services
at javax.sound.sampled.AudioSystem.getProviders(AudioSystem.java:1629)
at javax.sound.sampled.AudioSystem.getAudioFileReaders(AudioSystem.java:1404)
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1105)
at Audio.AudioPlayer.<init>(AudioPlayer.java:11)
at GameState.MenuState.<init>(MenuState.java:45)
at GameState.GameStateManager.loadState(GameStateManager.java:51)
at GameState.GameStateManager.<init>(GameStateManager.java:46)
at Main.GamePanel.init(GamePanel.java:58)
at Main.GamePanel.run(GamePanel.java:63)
at java.lang.Thread.run(Thread.java:744)

查看堆栈跟踪,它显然与音频 IO 有关;这个假设也与程序似乎一直运行直到使用音频的印象一致;但我就是不知道要改变什么,因为 .jar 工作得很好。

packr 的配置文件如下所示:

     {
"platform": "mac",
"jdk": "/Users/.../bounces/openjdk-1.7.0-u45-unofficial-icedtea-2.4.3-macosx-x86_64-image.zip",
"executable": "Moths",
"classpath": [
"/Users/.../bounces/Moths_JRE_1.7_beadz.jar"
],
"mainclass": "Main.Game",
"vmargs": [

],
"resources": [

],
"minimizejre": "soft",
"output": "/Users/.../bounces/Moths.beadz.app",
"icon": "/Users/.../bounces/icon.icns"
}

有什么想法吗?

更新:解决方案它与音频 I/O 无关,事实上解决方案要简单得多:packr 有一个可选的最小化例程,它在打包之前删除 JRE 中不必要的部分,以使应用程序包尽可能小。不幸的是,com.sun.media 是被删除的软件包之一。解决方案:打包前禁用最小化选项。

最佳答案

com/sun/media/sound/JDK13Services位于rt.jar对于 MacOS,它称为classes.jar,位于 /System/Library/Frameworks/<java_version>/Classes 下。确保您已将其包含在类路径中

关于macos - 从 .jar 制作 MacOS 应用程序包时出现 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40053452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com