Codenameone 将项目移动到新计算机后启动模拟器时出错

Codenameone 将项目移动到新计算机后启动模拟器时出错,codenameone,Codenameone,我刚刚将Eclipse中的Codenameone项目转移到一个新的MacBook上。当我现在启动模拟器时,eclipse控制台中显示了一个错误。因此,新安装的皮肤将不会被存储,并在模拟器的下一次启动时消失 这是错误的堆栈跟踪。你知道原因是什么吗?也许新MacBook上存储的某些路径不匹配 java.util.prefs.BackingStoreException: Synchronization failed for node '/com/codename1/impl/javase/'

我刚刚将Eclipse中的Codenameone项目转移到一个新的MacBook上。当我现在启动模拟器时,eclipse控制台中显示了一个错误。因此,新安装的皮肤将不会被存储,并在模拟器的下一次启动时消失

这是错误的堆栈跟踪。你知道原因是什么吗?也许新MacBook上存储的某些路径不匹配

java.util.prefs.BackingStoreException: Synchronization failed for node '/com/codename1/impl/javase/'
    at java.util.prefs.MacOSXPreferences.flush(MacOSXPreferences.java:226)
    at com.codename1.impl.javase.JavaSEPort.addSkinName(JavaSEPort.java:3425)
    at com.codename1.impl.javase.JavaSEPort.loadSkinFile(JavaSEPort.java:3517)
    at com.codename1.impl.javase.JavaSEPort.init(JavaSEPort.java:3673)
    at com.codename1.impl.CodenameOneImplementation.initImpl(CodenameOneImplementation.java:169)
    at com.codename1.ui.Display.init(Display.java:478)
    at com.codename1.impl.javase.Executor$1.run(Executor.java:112)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:702)
    at java.awt.EventQueue$3.run(EventQueue.java:696)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

这是JavaSE首选项API中的一个例外,请参见


检查Mac OS上的用户是否具有访问该文件夹的权限,以及Java SE进程是否也具有此类权限。请注意,我们使用的用户节点应该始终工作,并且永远不会存储到系统节点。

感谢您的回复:-)这很奇怪:我的用户可以完全访问目录~/Library/Preferences/。有一个名为com.codename1.impl.plist的文件,其中似乎存储了皮肤。但是当启动模拟器时,它会搜索节点com.codename1.impl.javase,并且没有这样命名的文件。即使我运行模拟器并加载新皮肤,也会抛出异常。文件com.codename1.impl.plist未更新。你有进一步的想法吗?我不确定。JavaSE preferences API在多个操作系统中被严重破坏,我们正在考虑从长远来看将其丢弃,但现在我建议尝试手动创建该文件以验证权限,或者尝试使用JavaSE测试用例中的preferences API。还要确保这不是特定于JVM的,因此,如果您安装了多个版本,请尝试检查哪个VM版本正在运行经过几次尝试后——所有这些都无效——我采取了另一种方法:我重新设置了我的新MacBook,并以与第一次不同的方式从TimeMachine备份中迁移了数据。现在一切都好了。作为我卸载eclipse和java之前的一次未成功试用,删除了所有可以识别为eclipse一部分的隐藏目录,使用新用户帐户再次安装了java和eclipse->无效:-(您是否有较旧版本的JDK?这似乎在JDK 8的后续更新中得到了修复否-我使用了当前版本的Java 8(1.8.0-151)