【问题标题】:Java could not open/create prefs errorJava 无法打开/创建首选项错误
【发布时间】:2014-05-18 09:24:41
【问题描述】:

我正在尝试播放 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,但它就是不想工作。

代码

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();
    }
}

【问题讨论】:

  • 试过了,但是在创建新密钥时它返回cannot create key
  • 会不会是权限不足的问题?您是否尝试过以管理员身份创建密钥?
  • 谢谢,我修好了,我意识到我只是去菜单并选择new。我实际上并没有去 HKEY_LOCAL_MACHINE\Software\JavaSoft`

标签: java


【解决方案1】:

这是一个已知的 Java 错误,在 Windows 10 和更新 112 上仍然存在。只需从提升的命令提示符运行该程序一次,它就会消失。

【讨论】:

    【解决方案2】:

    这是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 方法中或在使用 Preferences 之前编写此代码

    static {
        PlatformLogger logger = PlatformLogger.getLogger("java.util.prefs");
        logger.setLevel(Level.SEVERE);
    }
    

    【讨论】:

    • 这不是解决办法,它只会让WARNING日志消失,不应该使用。
    【解决方案3】:

    这是一个众所周知的 Windows 问题。 Just try it:

    HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft.....右键单击图标,然后将权限更改为完全操作

    【讨论】:

      【解决方案4】:

      我在 64 位 Windows 10 上遇到了这个问题,并且能够通过手动创建以下注册表项来解决该问题。

      HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs
      

      希望这对 Windows 用户有所帮助。

      【讨论】:

      • 为我工作,谢谢。更多细节,只需右键单击“JavaSoft”-“New”-“Key”,然后将密钥重命名为“Prefs”。重新运行gradle任务,警告信息消失了。
      猜你喜欢
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      相关资源
      最近更新 更多