11

对于我的大部分程序,我一直在 Windows 上进行编程,而且偏好没有问题。我刚刚启动了 Ubuntu 12.04 并将我的类加载到 Eclipse 中。在运行时,我在控制台中收到:

Oct 12, 2012 8:14:38 PM java.util.prefs.FileSystemPreferences$6 run
WARNING: Prefs file removed in background /home/steven/.java/.userPrefs/prefs.xml

我知道这与preferencesUbuntu 上的系统有关,但几次Google搜索都没有找到解决方案。谁能帮我解决这样的错误?

4

3 回答 3

2

可能您受到此错误的影响: https ://bugs.openjdk.java.net/browse/JDK-8068373

(prefs) FileSystemPreferences 将 \0 写入 XML 存储,导致所有首选项丢失

如果你打电话prefs.put(key, "some string with \0 in it")...

XML 编写器愉快地将 写入\0文件。我认为它逃脱了它,但正如已经提到的,这是没有意义的。稍后,当您尝试将其读回时,XML 文件无效。您会在日志中收到有关首选项文件无效的警告,并且您的所有首选项都会被清除。

其他操作系统版本信息:

发生在我们测试过的所有版本的 Linux 上。如果您故意使用此 PreferencesFactory,问题也可以在任何平台上重现。

您还可以在 stderr 上获得以下输出:

Dec 29, 2014 9:19:19 AM java.util.prefs.FileSystemPreferences$6 run 
WARNING: Invalid preferences format in /Users/daniel/.java/.userPrefs/com/acme/testing/prefs.xml 
Dec 29, 2014 9:19:19 AM java.util.prefs.FileSystemPreferences$6 run 
WARNING: Prefs file removed in background /Users/daniel/.java/.userPrefs/com/acme/testing/prefs.xml

解决方案:更新到 Java 9+

于 2015-09-17T08:51:39.213 回答
0

正如user11153最初写的那样,这似乎与空字符有关\0(或我最近做的一些其他 unicode 实验......)。这发生在我使用由 IntelliJ IDEA 构建和部署的 jdk 安装的 JShell 17.0.1 中。

我对保存在您的主目录中的文件进行了一些试验(对我来说.java/.userPrefs/tool/JShell/IncorrectFormatPrefs.xml,但在您的情况下应该是相似的),直到我发现有问题的行

<entry key="HISTORY_LINE_161" value="&quot;<ffff>&quot;.length()"/>

在我删除此行并将文件重命名为IncorrectFormatPrefs.xml警告prefs.xml消失后。

于 2022-01-06T13:54:56.850 回答
-1

在 ubuntu 20.04 中运行 intellij idea 时我遇到了同样的问题。

首先,我在 /opt 目录中有 inttelij,然后在尝试启动时发生错误。“已删除首选文件...”

将 inttelij 放在主目录中,问题就解决了。

于 2021-03-15T11:15:41.440 回答