最近,一些java应用程序现在开始打印以下警告:
java.util.prefs.FileSystemPreferences syncWorld
WARNING: Couldn't flush user prefs: java.util.prefs.BackingStoreException: /home/yha/.java/.userPrefs/_!(k![@"k!'`!~!"p!(@!bw"y!#4![!"v!':!d@"t!'`!bg"0!&@!e@"w!'`!ew"0!(k!c!"l!&:!d!"y!'k!bg"n!$0!,w"h!(!!c!"s!'k!}w"h!(@!a@"v!'4!.@"5!'}!a@"s!'`!cw!n!(0= create failed.
“创建失败”。开玩笑吧!这是什么类型的文件名?
谷歌搜索后,我现在知道Java首选项子系统是什么,Linux上存储的默认值应该是$HOME/.userPrefs
或者类似但是......但是没有解释我在日志消息中的路径。是来自。我仍然不知道在哪里设置这个值。也许有一个配置文件,其中某个存储文件路径已损坏。
在Kubuntu 12.10上使用openjdk-7
答案 0 :(得分:5)
那个糟糕的字符串是调用java.util.prefs.Base64.byteArrayToAltBase64()
的结果。如果你颠倒过程,你会得到:"yEdeditor.DocumentType{typeString='application-yfiles'}"
。这个字符串对你有意义吗?
文件名字符最终可能不是问题(它们可能是正确的)。如果你的ubuntu主目录是加密的,你很可能会遇到this "well known" issue(加密文件系统中文件的最大文件名长度为143个字符)。非常微妙,非常难以诊断bug。