1. 概述
在进行服务器部署时,会出现部署失败的情况,「部署环境异常」属于原因之一,用户可在 部署向导页面 中查看并修复问题。其中,「部署环境异常」这个原因又被分为不同情况,本文将介绍具体报错及解决方案。报错页面如下图所示:
2. tools.jar不存在
注1:这里以 Tomcat 为例进行演示,其他容器同样为拷贝到对应的容器的 lib 下。
注2:%JAVA_HOME%/jdk/lib 下的 tools.jar 为部署服务器本地 JAVA_HOME 里面的文件,不是开发计算机本地。
将%JAVA_HOME%/jdk/lib下的tools.jar拷贝到部署的服务器中,即%TOMCAT_HOME%/lib下和%TOMCAT_HOME%/webapps/工程名/WEB_INF/lib下。如下图所示:
3. tools.jar不匹配
报错例如:Caused by: java.lang.UnsatisfiedLinkError: sun.tools.attach.LinuxVirtualMachine.isLinuxThreads()Z
可以根据提示信息不同判断是 Windows 环境放了 Linux 的 tools.jar 还是 Linux 环境放了 Windows 的 tools.jar 。
4. attach.dll不存在
日志报错存在:Caused by: com.sun.tools.attach.AttachNotSupportedException: no providers installed
Windows 下安装 JDK 时会同时安装一个独立的 jre ,独立安装的 jre 下没有 attach.dll 这个文件,11.0 启动需要调用这个文件。
需将%JAVA_HOME%/jdk/jre/bin下的 attach.dll 拷贝到%JRE_HOME%/bin下。如下图所示:
5. /tmp 无法写入
日志报错存在:Caused by: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
/tmp 目录无法写入文件,可能导致这个现象的原因和解决方案是:
普通用户没有权限,用管理员给 /tmp 赋权chmod -R 1777 /tmp;1代表这是粘滞位,他的作用就是只有创建者和 root 可以删除。
/tmp 所在磁盘空间已满,清理下磁盘即可。
6. java.io.tmp 无法写入
不同的容器部署,java.io.tmp 指向的位置也不同。可能导致这个现象的原因是:
用户没有权限,赋权即可。
java.io.tmp 所在磁盘空间已满,清理磁盘即可。
7. GLIBC 版本问题
解决方案:升级 gcc ,具体方法请百度。
升级结束后: 命令行输入:ldd FineAssist_x86_64.so,如下图所示,即为正常。
8. FinePrivacy未知异常
拿启动日志联系技术支持,技术支持联系方式:前往「服务」,选择「在线支持」、电话「400-811-8890」。
9. fontconfig缺失/Dec-Basic_Non_Existent
服务器部署包中的 OpenJDK,因版权原因不带字体包。如果 Linux 本身缺少字体包就会报错:fontconfig缺失,或Dec-Basic_Non_Existent。
因此需要用户在进行部署前,先检测fontconfig。
检测方法:
用户可通过在服务器上执行fc-list命令,或者检测/usr/bin目录下是否存在fc-list文件,来判断服务器是否已安装好fontconfig。
安装方法:
用户可根据自身系统情况自行百度安装fontconfig的方法。
一般在 Linux 中直接执行命令 yum install fontconfig,然后重启 Tomcat 服务器,即可成功安装 。
10. 服务器环境缺少libxrender和libxtst图形库
解决方案一:设置headless=true(推荐)
headless 模式是系统的一种工作模式,如果系统属性 java.awt.headless被设置true,那么headless工具包就会被使用。
本节展示 Tomcat 环境下启用 headless 模式的步骤。
Windows:进入%Tomcat_HOME%\bin目录。寻找名为setenv.bat的文件。如果文件不存在,可以创建一个新的setenv.bat文件。在文件中添加以下行来设置,配置完成后重启工程。
set JAVA_OPTS=%JAVA_OPTS% -Djava.awt.headless=true
Linux:进入%Tomcat_HOME%\bin目录。寻找名为setenv.sh的文件。如果文件不存在,可以创建一个新的setenv.sh文件。在文件中添加以下行来设置,配置完成后重启工程。
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
解决方案二:安装缺失图形库
外网用户:
执行命令行在线安装图形库(示例为unbuntu系统)
apt-get install libxrender-dev
apt-get install libxtst-dev
内网用户:
1)访问 https://developer.aliyun.com/packageSearch?word=libxrender ,按照系统和版本选择安装包
2)手动安装,安装语句示例:
deb包系列的系统(如 ubuntu) : dpkg -i **.deb
rpm包系列的系统(如 centos) : yum install **.rpm