Nexus 3 Docker容器升级后用户偏好无法锁定警告问题求助
Nexus 3.40.1 Docker镜像升级后java.util.prefs锁警告问题处理
问题背景
通过Docker运行Sonatype Nexus 3,启动命令如下:
docker run -d -p 80:8081 --ulimit nofile=65536:65536 --name nexus -v nexus-data:/nexus-data -e INSTALL4J_ADD_VM_PARAMS="-Xms4g -Xmx4g -XX:MaxDirectMemorySize=6717m -Djava.util.prefs.userRoot=${NEXUS_DATA}/javaprefs" sonatype/nexus3
从3.30.0版本升级到3.40.1后,每30秒会触发一次如下警告:
2022-07-18 13:14:45,860+0000 WARN [Timer-0] *SYSTEM java.util.prefs - Couldn't flush user prefs: java.util.prefs.BackingStoreException: Couldn't get file lock. 2022-07-18 13:15:15,860+0000 WARN [Timer-0] *SYSTEM java.util.prefs - Could not lock User prefs. Unix error code 2.
已尝试以下操作但问题未解决:
- 检查
/nexus-data/javaprefs目录,未发现锁文件 - 删除该目录后,Nexus未自动重建,警告依旧出现
- 按官方Docker仓库说明全新安装、更换操作系统(Linux/Windows Docker Desktop)、有无挂载数据卷,问题均复现,判断为新版本Bug
解决建议
1. 屏蔽java.util.prefs警告日志
如果暂时无法修复Bug,可通过修改Nexus日志配置屏蔽该警告:
- 进入Nexus容器:
docker exec -it nexus /bin/bash - 编辑日志配置文件:
vi /opt/sonatype/nexus/etc/logback/logback.xml - 在
<configuration>节点内添加如下配置:
<logger name="java.util.prefs" level="ERROR"/>
- 重启Nexus容器:
docker restart nexus
此配置将java.util.prefs的日志级别提升至ERROR,从而过滤掉WARN级别的警告信息。
2. 临时回退版本
若警告影响日志可读性或业务排查,可临时回退到3.30.0版本:
docker stop nexus && docker rm nexus docker run -d -p 80:8081 --ulimit nofile=65536:65536 --name nexus -v nexus-data:/nexus-data -e INSTALL4J_ADD_VM_PARAMS="-Xms4g -Xmx4g -XX:MaxDirectMemorySize=6717m -Djava.util.prefs.userRoot=${NEXUS_DATA}/javaprefs" sonatype/nexus3:3.30.0
3. 关注官方修复进度
由于问题在多环境复现,属于新版本Bug,可等待Sonatype官方发布修复版本。
问题严重程度说明
目前该警告仅为日志层面提示,未发现影响Nexus核心功能(仓库管理、构件上传下载等),可暂时屏蔽警告继续使用,但建议持续关注官方修复动态。
内容的提问来源于stack exchange,提问作者shaki
相关产品推荐
相关产品推荐

