java.util.prefs.FileSystemPreferences尝试打开损坏的路径

yan*_*kee 4 java openjdk preferences

从最近开始,一些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.
Run Code Online (Sandbox Code Playgroud)

"创造失败".开玩笑吧!这是什么类型的文件名?

谷歌搜索之后,我现在知道Java首选项子系统是什么,并且Linux上存储的默认值应该是$HOME/.userPrefs等等,但是...不能解释我的日志消息中的路径来自何处.我仍然不知道在哪里设置这个值.也许有一个配置文件,其中某个存储文件路径已损坏.

在Kubuntu 12.10上使用openjdk-7

jta*_*orn 5

那个糟糕的字符串是调用的结果java.util.prefs.Base64.byteArrayToAltBase64().如果你颠倒过程,你会得到:"yEdeditor.DocumentType{typeString='application-yfiles'}".这个字符串对你意味着什么?

文件名字符最终可能不是问题(它们可能是正确的).如果你的ubuntu主目录是加密的,你很可能遇到这个"众所周知的"问题(加密文件系统中文件的最大文件名长度为143个字符).非常微妙,非常难以诊断bug.