4

从最近开始,一些 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 Preferences Subsystem 是什么,Linux 上存储的默认值应该是什么$HOME/.userPrefs,但是......这并不能解释我在日志消息中的路径来自哪里。而且我仍然不知道在哪里设置这个值。也许某个配置文件的存储文件路径已损坏。

在 Kubuntu 12.10 上使用 openjdk-7

4

1 回答 1

5

那个古怪的字符串是调用的结果java.util.prefs.Base64.byteArrayToAltBase64()。如果你反转这个过程,你会得到:"yEdeditor.DocumentType{typeString='application-yfiles'}". 那个字符串对你有什么意义吗?

文件名字符可能最终不是问题(它们可能是正确的)。如果您的 ubuntu 主目录已加密,您很可能会遇到这个“众所周知的”问题(加密文件系统中文件的最大文件名长度为 143 个字符)。非常微妙且极难诊断的错误。

于 2012-12-12T19:41:24.703 回答