项目

一般

简介

动态链接库调用失败

陈 泽豪5 个月 之前添加

版本:AAS-V10企业版

环境:Window、JDK11

小版本:20231204

现象:aas部署在window中,jdk版本为11,应用代码调用System.loadLibrary()异常,提示找不到相关的dll文件;(JDK8中正常)

java.lang.UnsatisfiedLinkError: no zrtc in java.library.path:
 [E:/dll-txt, D:/工作资料/AAS/ApusicAS/aas/lib, C:/Program Files (x86)/Common Files/Oracle/Java/javapath, C:/Windows/Sun/Java/bin, C:/Windows/System32, C:/Windows, D:/Program Files (x86)/Tools/VMware/bin, C:/Windows/System32/wbem, C:/Windows/System32/WindowsPowerShell/v1.0, 
C:/Windows/System32/OpenSSH, D:/java/bin, D:/java/jre/bin, D:/Program Files (x86)/Tech/apache-maven-3.6.3/bin, C:/Users/kingdee/AppData/Local/Microsoft/WindowsApps, D:/Program Files (x86)/Tools/IDEA/IntelliJ IDEA 2023.3.3/bin, D:/Program Files (x86)/Tools/Vscode/Microsoft VS Code/bin, 
D:/工作资料/AAS/ApusicAS/aas/bin, .]

原因:aas返回的usr_paths时,存储的类型为String,直接放入到list,jdk11在获取并输出时,获取的变量,是所有环境变量拼接在一个字符串中,导致识别判断dll文件时找不到文件

 

解决方案

1、下载附件中的aas-launcher.jar,替换{ApusicAS\aas\modules}下的aas-launcher.jar
(替换前先备份原jar包)

2、识别dll文件,有两种方式:

方式一. 指定dll文件所有目录,通过管控台/配置文件,配置后需要重启服务器

a.管控台:

b.配置文件(ApusicAS\aas\domains\mydomain\config下的domain.xml)操作先备份domain.xml

找到server-config模块中的java-config标签,加入属性native-library-path-prefix="xxxx/xxx","xxxx/xxx"为动态链接库文件所在的目录,只需要目录,不需要具体到文件名

 

方式二.将文件直接放到ApusicAS\aas\lib

ApusicAS\aas\lib是aas的默认环境变量,将文件直接放到该目录下,也能够扫描到