我试图groovysh在Windows 8上打开Groovy Shell()并得到以下输出:
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.
Run Code Online (Sandbox Code Playgroud)
打印完上述消息后,shell按预期启动.
我有一个Java应用程序,Preferences通过使用:
Preferences prefs = Preferences.userNodeForPackage(MyClass.class);
prefs.get((String)key, "");
Run Code Online (Sandbox Code Playgroud)
在新的Windows 8计算机上,这失败了:
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs
at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
Run Code Online (Sandbox Code Playgroud)
错误代码5被拒绝访问.
我找不到任何我做错的事.谷歌和搜索引擎搜索只给出了与Windows Vista/7相关的旧结果,其中一个错误地使用了systemRoot(如何使用Java编写系统首选项?我可以调用UAC吗?).
可以通过创建HKLM/Software/JavaSoft/Prefs以及设置HKLM/Software/JavaSoft的权限来"修复"错误,如此处所述Java:java.util.Preferences失败.但这不是我可以要求用户在安装程序时执行的操作.
所以我正在寻找更好的解决方案.我最后的努力是简单地写入文件,但我想避免这样做.这似乎也是相关的我正在尝试使用来自XML的Java Prefences而不使用Windows注册表,但我看到一个与注册表相关的消息,但它被拒绝投票而没有答案.
目前我怀疑Win8 JVM错误......