热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java默认文件夹设置_Java–设置首选项backingstore目录

我需要在我的Java应用程序中创build一个持久存储,以便所有用户都可以访问它。所以我正在研究java.util.prefs.Preferences和使用syste

我需要在我的Java应用程序中创build一个持久存储,以便所有用户都可以访问它。 所以我正在研究java.util.prefs.Preferences和使用systemRoot()在我的Windows上工作正常,保存在registry的数据。 但是我真的在Linux(Ubuntu)上面临一些问题。 我想使用其他应用程序已经使用的目录:/ usr / share /。 所以,我试图在运行时将systemRoot默认目录redirect到/ usr / share。 这是我的代码:

System.setProperty("java -Djava.util.prefs.systemRoot", "/usr/share/myfolder"); Preferences pref = Preferences.systemRoot().node("/usr/share/myfolder");

根据这个网站 ,我必须在执行这个命令行之前创build.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不工作。 任何build议? 提前致谢!

在Linux系统中, 系统根偏好节点将位于/etc 。 这是由于历史原因造成的,并且是由Linux标准库规定的标准。 任何非系统偏好都可以在其他位置进行,但是将系统偏好放在其他地方违反了操作系统的设计。

在Linux系统中,你的定义是无效的,因为它不能在/ etc开始。 显然,Java代码中的某些东西会根据您决定重新设置首选项根目录的操作系统规范。

通常情况下,这些文件不受世界(或甚至大多数用户)可写入的影响而不受修改。 这意味着对于用户有权访问首选项,他们应该去

Preferences.userRoot()

这将把他们放置在他们的主目录(他们将有修改权限)的隐藏目录。

如果你希望任何用户读取其他用户的喜好(说明听起来像你可能),那么你将需要有一个安装程序作为一个足够的授权用户(通常是root)运行,使/etc下所需的目录,并更改它的权限成为世界可写的。

通常情况下,/ etc下的文件不是世界可写的,因为用户可以改变其他用户的设置,并且考虑到用户预期环境的安全违规类型。 例如,粗心的员工(或者不满意的员工)可能会一举消灭所有其他用户的偏好。

比马莱什建议,而不是

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

这是在基于* nix的服务器上运行的一个令人讨厌的问题。

我能够通过使用以下vm参数来解决它:

-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)。



推荐阅读
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 【并发编程】全面解析 Java 内存模型,一篇文章带你彻底掌握
    本文深入解析了 Java 内存模型(JMM),从基础概念到高级特性进行全面讲解,帮助读者彻底掌握 JMM 的核心原理和应用技巧。通过详细分析内存可见性、原子性和有序性等问题,结合实际代码示例,使开发者能够更好地理解和优化多线程并发程序。 ... [详细]
  • Norton Partition Magic 中 PHP 函数 error_reporting(E_ALL ^ E_NOTICE) 的详细解析与应用
    在 Windows 环境下,通过具体示例分析了 `Norton Partition Magic` 中 `PHP` 函数 `error_reporting(E_ALL ^ E_NOTICE)` 的详细解析与应用。该函数用于控制错误报告级别,例如在从 PHP 4.3.0 升级到 4.3.1 后,程序出现多处错误的原因及解决方法。本文深入探讨了错误报告配置对程序稳定性的影响,并提供了实用的调试技巧。 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • 深入解析 ELF 文件格式与静态链接技术
    本文详细探讨了ELF文件格式及其在静态链接过程中的应用。在C/C++代码转化为可执行文件的过程中,需经过预处理、编译、汇编和链接等关键步骤。最终生成的可执行文件不仅包含系统可识别的机器码,还遵循了严格的文件结构规范,以确保其在操作系统中的正确加载和执行。 ... [详细]
  • 求助高手:下载的压缩包中包含CMake文件,如何在Windows环境下使用已安装的CMake GUI进行运行?
    从GitHub仓库 `https://github.com/vonmax007/RobotSimulation` 下载的代码包含多种算法,其中算法1的文件目录中包含了CMake文件。为了在Windows环境下使用已安装的CMake GUI运行这些文件,需要先确保CMake已正确安装,并按照以下步骤操作:打开CMake GUI,设置源代码路径和构建路径,点击“Configure”配置项目,然后点击“Generate”生成构建文件。最后,在生成的构建目录中使用命令行或IDE进行编译和运行。 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • 本文详细解析了如何使用 jQuery 实现一个在浏览器地址栏运行的射击游戏。通过源代码分析,展示了关键的 JavaScript 技术和实现方法,并提供了在线演示链接供读者参考。此外,还介绍了如何在 Visual Studio Code 中进行开发和调试,为开发者提供了实用的技巧和建议。 ... [详细]
  • 浅析PHP中$_SERVER[
    在PHP后端开发中,`$_SERVER["HTTP_REFERER"]` 是一个非常有用的超级全局变量,它可以获取用户访问当前页面之前的URL。本文将详细介绍该变量的使用方法及其在不同场景下的应用,如页面跳转跟踪、安全验证和用户行为分析等。通过实例解析,帮助开发者更好地理解和利用这一功能。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 探讨 `org.openide.windows.TopComponent.componentOpened()` 方法的应用及其代码实例分析 ... [详细]
  • 利用PaddleSharp模块在C#中实现图像文字识别功能测试
    PaddleSharp 是 PaddleInferenceCAPI 的 C# 封装库,适用于 Windows (x64)、NVIDIA GPU 和 Linux (Ubuntu 20.04) 等平台。本文详细介绍了如何使用 PaddleSharp 在 C# 环境中实现图像文字识别功能,并进行了全面的功能测试,验证了其在多种硬件配置下的稳定性和准确性。 ... [详细]
  • 优化后的标题:PHP分布式高并发秒杀系统设计与实现
    PHPSeckill是一个基于PHP、Lua和Redis构建的高效分布式秒杀系统。该项目利用php_apcu扩展优化性能,实现了高并发环境下的秒杀功能。系统设计充分考虑了分布式架构的可扩展性和稳定性,适用于大规模用户同时访问的场景。项目代码已开源,可在Gitee平台上获取。 ... [详细]
  • 本文详细介绍了在Ubuntu操作系统中使用GDB调试工具深入分析和调试标准库函数`printf`的源代码过程。通过具体步骤和实例,展示了如何设置断点、查看变量值及跟踪函数调用栈,帮助开发者更好地理解`printf`函数的工作原理及其内部实现细节。 ... [详细]
author-avatar
逗趣游戏
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有