我试图在一个
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.
我做了一些挖掘/阅读,并推导出以下几点:
具有根访问权限的管理员必须使用drwxr-xr-x访问创建系统首选项目录/etc/.java/.systemPrefs.
Java正在寻找/etc/.java/.systemPrefs/.system.lock和/etc/.java/.systemPrefs/.systemRootModFile
手动创建上述文件(使用“touch”创建空文件)及其包含的目录应该可以修复.文件的权限应为544,其目录的权限应为755,所有者和组均为root.
但
我不是root,让某人运行root是昂贵的,我有多个用户运行jvms,这是否意味着我必须创建这些文件和设置权限,以便所有用户都可以访问这些权限?
有没有人遇到这个问题,如果他们有一个更简单的解决方案我失踪了?
解决方法
为每个用户设置这些设置:
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 – Setting Preferences backingstore directory