我正在尝试播放MIDI音频,但是当我这样做时,它会一直返回错误“
May 18, 2014 10:23:29 AM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root
0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
我已进入regedit
并且我的权限在EVERYONE
,但它只是不想工作。
CODE
import javax.sound.midi.Instrument;
import javax.sound.midi.MidiChannel;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.MidiUnavailableException;
import javax.sound.midi.Synthesizer;
public class Sound {
public static void main(String args[]) throws MidiUnavailableException {
int channel = 0;
int volume = 80;
int duration = 200;
Synthesizer synth;
synth = MidiSystem.getSynthesizer();
synth.open();
MidiChannel[] channels = synth.getChannels();
channels[channel].noteOn(60, volume); // C note
synth.close();
}
}
答案 0 :(得分:3)
这是一个已知的Java错误,仍然在Windows 10和更新112上。只需从提升的命令提示符运行一次程序,它就会消失。
答案 1 :(得分:1)
这是众所周知的Windows问题。 Just try it:
HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft .....右键单击图标,然后将权限更改为完整操作
答案 2 :(得分:1)
我在64位Windows 10上遇到了此问题,并能够通过手动创建以下注册表项来解决此问题。
HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs
希望这对Windows用户有所帮助。
答案 3 :(得分:0)
是Java问题
我尝试仅使用USER_PREFERENCES进行解决,但是WindowsPreferences类具有此代码
static final Preferences userRoot = new WindowsPreferences(USER_ROOT_NATIVE_HANDLE, WINDOWS_ROOT_PATH);
static final Preferences systemRoot = new windowsPreferences(SYSTEM_ROOT_NATIVE_HANDLE, WINDOWS_ROOT_PATH);
因此它尝试读取systemPreferences yes或yes。
我尝试更改HKEY_LOCAL_MACHINE上的权限,但现在在Win-10中它不起作用。过去,在win-7中它起作用。 并不重要,仅在使用USER_PREFS时才跟踪
这是我的(棘手的)解决方案...使用main方法或在使用“偏好设置”之前编写此代码
static {
PlatformLogger logger = PlatformLogger.getLogger("java.util.prefs");
logger.setLevel(Level.SEVERE);
}