我最近学习了如何将声音添加到我正在创建的小型贪吃蛇游戏中。蛇吃苹果时播放的声音。我遇到的问题是每次蛇吃苹果时我都会在 cosole 中收到此警告(但程序继续运行):
015-10-13 10:00:16.922 java[39731:970632] 10:00:16.922 WARNING: 140: This application, or a library it uses, is using the deprecated Carbon Component Manager for hosting Audio Units. Support for this will be removed in a future release. Also, this makes the host incompatible with version 3 audio units. Please transition to the API's in
AudioComponent.h
.
这是什么意思,我需要做什么来修复这个错误?
这是我播放声音的方法:
private static void playSound(File Sound){
try{
Clip clip = AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(Sound));
clip.start();
Thread.sleep(clip.getMicrosecondLength()/1000);
}catch(Exception e){
}
}
最佳答案
长话短说:
这是针对负责您的声音处理程序的开发人员的控制台警告,在本例中它看起来像 AudioSystem
。您的程序应该可以运行,但它会不断抛出这些警告。您使用的是旧版本的 Java 吗?这或许可以解释这个问题。
长格式:
我遇到这个问题是因为我在 Python 中使用 SimpleCV 时收到了相同的警告(具有不同的时间和过程戳)。我做了一些挖掘,我想我至少可以详细说明这个问题,如果不能解决的话。
首先,这是 Apple 特有的问题。我们看到的警告实际上是控制台日志注释,如果您打开控制台并查找时间戳,就可以看到它。 Carbon Component Manager 是 Mac 处理声音的一种已弃用的方式,并且正在逐步淘汰使用 AudioComponent.h
的更新方式。
看起来 AudioSystem
仍在以旧的方式开展业务。此注释向开发人员发出信号,表明他们需要更新 AudioSystem
以与新 API 交互。这可能已经在较新的 Java 版本中得到解决。如果您忽略它,您的程序应该可以正常工作,但您可以尝试使用更新的 Java 版本,看看是否有帮助。
我建议编辑您的问题以包含您的系统规范和 Java 版本。
关于弃用 Carbon Core 的更多信息:
https://developer.apple.com/library/mac/releasenotes/General/CarbonCoreDeprecations/
万一其他人从 SimpleCV/Python 遇到这个问题,为了完整性:
我在 Macbook Pro(2011 年末)上运行 OSX El Capitan,使用 Python 3.5 和 SimpleCV 1.3。我的控制台警告(我猜)源于在 SimpleCV 中使用 Camera() 拍照时播放的快门声。
关于运行时的 Java Carbon 组件警告 - OS X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33098495/