Leo*_*rdo 3 java linux jvm preferences
我需要在我的Java应用程序中创建持久存储,以便所有用户都可以访问它.所以我在Windows上研究java.util.prefs.Preferences和使用systemRoot()对我来说很好的工作,在Register上保存数据.但我真的在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");
Run Code Online (Sandbox Code Playgroud)
根据这个站点,我必须.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不起作用.有什么建议吗?提前致谢!
小智 7
比马勒什建议不要
System.setProperty("java -Djava.util.prefs.systemRoot", "/usr/share/myfolder"),你说
System.setProperty("-Djava.util.prefs.systemRoot", "/usr/share/myfolder").
但是,您尝试设置的属性的名称是java.util.prefs.systemRoot,而不是-Djava.util.prefs.systemRoot,所以您应该这样做
System.setProperty("java.util.prefs.systemRoot", "/usr/share/myfolder");
如果这不起作用,请尝试将"-D"开关添加到启动程序的命令行.那
java -D...应该去哪里.该命令将从
java -Djava.util.prefs.systemRoot=/usr/share/myfolder
在 Linux 系统中,系统根首选项节点将位于/etc. 这是由于历史原因,并且是由 Linux 标准库管理的标准。任何非系统首选项都可以放在其他位置,但是将系统首选项放在其他位置是违反操作系统设计的。
很可能您的定义在 Linux 系统中无效,因为它无法从 /etc 启动。显然,Java 代码中的某些内容遵循操作系统的规范,而不是您决定重新设置首选项根的基础。
通常,此类文件通过不可全局(或什至大多数用户)不可写来防止修改。这意味着要让用户访问首选项,他们应该在
Preferences.userRoot()
Run Code Online (Sandbox Code Playgroud)
这会将它们放置在它们的主目录旁边的隐藏目录中(在那里它们将具有修改权限)。
如果您希望任何用户阅读任何其他用户的首选项(描述听起来像您可能会这样做),那么您将需要一个安装程序以足够授权的用户(通常是 root)身份运行,以创建所需的目录/etc并将其权限更改为世界可写。
通常 /etc 下的文件是不可写的,因为用户可能会更改其他用户的设置,并且被认为是对用户预期环境的一种安全破坏。例如,一个粗心的员工(或一个心怀不满的员工)可能会一次性抹掉所有其他用户的偏好。
这是在基于*nix的服务器上运行的Java的一个非常棘手的问题.
我能够通过使用以下vm args来解决它:
-Djava.util.prefs.userRoot=/opt/apache-tomcat-7.0.50/uprefs -Djava.util.prefs.systemRoot=/opt/apache-tomcat-7.0.50/sprefs
Run Code Online (Sandbox Code Playgroud)
但是在systemRoot路径上的一个重要注意事项是在其中创建一个名为的子文件夹,.systemPrefs否则它将无法工作.
另外,不要忘记chown -R这些目录给运行java应用程序的用户(在我的例子中是tomcat).
| 归档时间: |
|
| 查看次数: |
16267 次 |
| 最近记录: |