Java无法打开/创建prefs错误

时间:2014-05-18 09:24:42

标签: java

我正在尝试播放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();
    }
}

4 个答案:

答案 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);
}