在Linux下不同用户的Java系统偏好设置

19

我正在尝试在一台Linux机器上以不同用户身份运行多个JVM(包括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,并设置drwxr-xr-x访问权限。

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

手动创建上述文件(使用“touch”创建空文件)及其包含的目录应该可以解决问题。文件的权限应该是544,它们的目录权限应该是755,所有者和组都是root。

但是

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

是否有人遇到过这个问题,如果有的话,我是否错过了更简单的解决方案?

4个回答

34

为每个用户设置这些设置:

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-设置首选项backingstore目录


-1

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


-1

只需给予 /etc/.java 完全权限即可。

chmod -R 777 /etc/.java/

或者

sudo chmod -R 777 /etc/.java/

-1

我通过将我的 Bash 程序执行的权限设置为 755 来解决了这个问题。

ls abc.sh
chmod 755 abc.sh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接