Linux中不同用户下的java系统偏好

2022-09-02 12:37:18

我正在尝试在一个linux机器上的不同用户下运行多个jvms(包括tomcat)。我没有看到太多的问题,但在catalina.out中,我一直看到这个:

May 30, 2014 1:16:16 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 7626 ms
May 30, 2014 1:16:37 PM java.util.prefs.FileSystemPreferences$2 run
WARNING: Could not create system preferences directory. System preferences are unusable.
May 30, 2014 1:16:55 PM java.util.prefs.FileSystemPreferences checkLockFile0ErrorCode
WARNING: Could not lock System prefs. Unix error code -158097957.
May 30, 2014 1:16:55 PM java.util.prefs.FileSystemPreferences syncWorld
WARNING: Couldn't flush system prefs: java.util.prefs.BackingStoreException: Couldn't get file lock.

我做了一些挖掘/阅读,并推断出以下内容:

具有 root 访问权限的管理员必须创建系统首选项目录/etc/.java/.systemPrefs with drwxr-xr-x access.

Java正在寻找和/etc/.java/.systemPrefs/.system.lock/etc/.java/.systemPrefs/.systemRootModFile

手动创建上述文件(使用“触摸”创建空文件)及其包含目录应修复。对文件的权限应该是,对它们目录的权限应该是,所有者和组是所有人的根。544755

我不是root,让某人运行root是昂贵的,我有多个用户运行jvms,这是否意味着我必须创建这些文件并设置权限,以便所有用户都可以使用这些权限进行访问?

有没有人遇到过这个问题,如果他们有,有没有一个更简单的解决方案,我错过了?


答案 1

为每个用户设置以下设置:

mkdir -p ~/.java/.systemPrefs
mkdir ~/.java/.userPrefs
chmod -R 755 ~/.java
export JAVA_OPTS="-Djava.util.prefs.systemRoot=/home/user/.java -Djava.util.prefs.userRoot=/home/user/.java/.userPrefs"
  <run appl>

在不创建目录的情况下,某些 Java 虚拟机默认为 。/etc/

另请参见:Java - 设置首选项支持存储目录


答案 2

我的想法是,即使你有不同的用户,JVM仍然将tomcat读取为一个用户,因为它是相同的过程。也许你需要的是一个用户管理机制?登录和注销


推荐