1. 概述
1.1 问题描述
Linux 或者 winsever 部署,有时候启动会报错 404 ,或者 tools.jar 不匹配,在检查过 tools.jar 后并没有发现问题,这种情况可能是因为系统限制或者缺少部分系统文件导致 FineAssist 和 FinePrivacy 无法加载导致的。
1.2 解决思路
出现这种问题可能的 2 种原因:
FineAssist 或者 FinePrivacy 无法复制。
FineAssist 和 FinePrivacy 可以复制,但是无法加载。
解决方法就是避开这两步,强制加载自定义路径下的 FineAssist 和 FinePrivacy 。
2. 操作步骤
2.1 确认问题现象
两种现象的解决方案是一样的。
2.1.1 现象一
启动后查看 temp 文件夹下:
没有如图所示的 FineAssist.dll 和 FinePrivacy.dll(Linux 下是 so 文件),则说明 FineAssist 和 FinePrivacy 无法复制。
2.1.2 现象二
查看日志(需要查看完整日志如:catalina.out,fanruan.log 没有记录相关日志):
[DEBUG]Can't load library: E:\lingpai\tomcat-win64\tomcat-win64\temp\FinePrivacy_x86_645618361827197160860.dll
java.lang.UnsatisfiedLinkError: Can't load library: E:\lingpai\tomcat-win64\tomcat-win64\temp\FinePrivacy_x86_645618361827197160860.dll
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1827
出现如图所示类似的报错,则说明是 FinePrivacy 无法加载导致的。
2.2 手动放置 FineAssist 和 FinePrivacy 文件
使用解压缩软件打开 \WEB-INF\lib 目录下的 fine-core-11.0.jar 文件。
将对应操作系统的 FineAssist 和 FinePrivacy 文件拷贝出来,文件在文件内的路径:com\fr\jvm\assist 。
如:Windows64 位系统需要拷贝 FineAssist_x86_64.dll 和 FinePrivacy_x86_64.dll 。
2.3 配置启动参数
以 Windows64 位系统为例,Tomcat 部署工程,假设将 dll 文件放在C:\FineReport\FineReport10\apache-tomcat-8.5.49\bin\下
修改catalina.bat,配置 JAVA_OPTS :
set "JAVA_OPTS=%JAVA_OPTS% -Dfineassist=C:\FineReport\FineReport10\apache-tomcat-8.5.49\bin\FineAssist_x86_64.dll -Dfineassist.copy=disable -Dfineprivacy=C:\FineReport\FineReport10\apache-tomcat-8.5.49\bin\FinePrivacy_x86_64.dll -Dfineprivacy.copy=disable"
Linux 下部署修改 catalina.sh(以amd64为例,假设文件放在/opt下)
JAVA_OPTS = '-Dfineassist=/opt/FineAssist_x86_64.so -Dfineassist.copy=disable -Dfineprivacy=/opt/FinePrivacy_x86_64.so -Dfineprivacy.copy=disable'
3. 特殊案例
国产专用机,必须按照添加上述启动参数。