我正在尝试在一个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
手动创建上述文件(使用“touch”创建空文件)及其包含的目录应该修复。文件的权限应为544
,其目录的权限应为755
,所有者和群组均为root用户。
但是
我不是root,让某人运行root是昂贵的,我有多个用户运行jvms,这是否意味着我必须创建这些文件并设置权限,以便所有用户都可以访问这些权限?
有没有人遇到这个问题,如果他们有一个更简单的解决方案我错过了?
答案 0 :(得分:24)
为每位用户设置以下设置:
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/
。
答案 1 :(得分:0)
我的想法是,即使你有不同的用户,JVM仍然会将tomcat作为一个用户读取,因为它是相同的进程。您可能需要的是用户管理机制?登录并注销
答案 2 :(得分:0)
我通过将执行Bash程序的权限设置为755来解决了这个问题
ls abc.sh
chmod 755 abc.sh
答案 3 :(得分:-1)
只需授予 /etc/.java 的完全权限
chmod -R 777 /etc/.java/
或
sudo chmod -R 777 /etc/.java/