我需要在我的 Java 应用程序中创建一个持久存储,以便所有用户都可以访问它。所以我正在研究java.util.prefs.Preferences
并使用systemRoot()
我在 Windows 上工作得很好,将数据保存在寄存器中。
但我在 Linux (Ubuntu) 上确实遇到了一些问题。我想使用我们的其他应用程序已经使用的目录:/usr/share/。
所以,我正在尝试重定向systemRoot
运行时默认目录为 /usr/share。这是我的代码:
System.setProperty("java -Djava.util.prefs.systemRoot", "/usr/share/myfolder");
Preferences pref = Preferences.systemRoot().node("/usr/share/myfolder");
根据这个site,我必须创建.systemPrefs
执行此命令行之前的文件夹及其隐式systemRoot()
会使用它。
当我执行我的程序时,我收到以下警告:java.util.prefs.FileSystemPreferences syncWorld
WARNING Couldn't flush system prefs: java.util.prefs.BackingStoreException: /etc/.java/.systemPrefs/usr create failed.
所以我假设System.setProperty
不工作。有什么建议吗?
提前致谢!
这是在基于 *nix 的服务器上运行 Java 时遇到的一个非常烦人的问题。
我能够通过使用以下虚拟机参数来解决这个问题:
-Djava.util.prefs.userRoot=/opt/apache-tomcat-7.0.50/uprefs -Djava.util.prefs.systemRoot=/opt/apache-tomcat-7.0.50/sprefs
但有一个重要的注意事项systemRoot
路径是在其中创建一个名为的子文件夹.systemPrefs
否则它不会起作用。
另外,别忘了chown -R
这些目录提供给运行 java 应用程序的用户(在我的例子中是 tomcat)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)