Java 如何配置YAJSW在磁盘上查找jnidispatch.dll?
我们使用YAJSW将Java应用程序包装为Windows服务。测试工作站映像时,corporate McAfee Antivirus会发出警告,因为在启动服务时,JNIDSpatch.dll会从jna-4.1.0.jar复制到临时文件夹中的新名称 将dll签名添加到防病毒规则可防止显示停止错误,但每次都会弹出严重警告 我们尝试将JNIDSPATH.dll复制到C:\DLLfolder并将以下行添加到wrapper.conf: wrapper.java.additional.4=-Djna.boot.library.path=C:/DLLfolder/ 然后,我们将C:\DLLfolder添加到Windows系统%PATH%并重新启动了Windows 但是,在监视Windows服务启动时,我们仍然可以看到DLL被从Jar中提取出来,而防病毒程序会抱怨 YAJSW代码native.java中的注释是:Java 如何配置YAJSW在磁盘上查找jnidispatch.dll?,java,dll,jna,yajsw,Java,Dll,Jna,Yajsw,我们使用YAJSW将Java应用程序包装为Windows服务。测试工作站映像时,corporate McAfee Antivirus会发出警告,因为在启动服务时,JNIDSpatch.dll会从jna-4.1.0.jar复制到临时文件夹中的新名称 将dll签名添加到防病毒规则可防止显示停止错误,但每次都会弹出严重警告 我们尝试将JNIDSPATH.dll复制到C:\DLLfolder并将以下行添加到wrapper.conf: wrapper.java.additional.4=-Djna.boo
When JNA classes are loaded, the native shared library (jnidispatch) is
loaded as well. An attempt is made to load it from the any paths defined
in <code>jna.boot.library.path</code> (if defined), then the system library
path using {@link System#loadLibrary}, unless <code>jna.nosys=true</code>.
If not found, the appropriate library will be extracted from the class path
(into a temporary directory if found within a jar file) and loaded from
there, unless <code>jna.noclasspath=true</code>.
我们缺少什么步骤?我确认我们通过以下措施解决了问题: 1) 将-Djna.nounpack=true添加到wrapper.conf 2) 从JAR中删除了2个JNIDSpatch.dll 32位和64位dll 3) 将DLL放置在Windows路径上 请注意,要安装Windows服务,需要jnidispatch.dll
非常感谢technomage 使用
-Djna.debug\u load.jna=true运行,查看jna在哪里查找jnidispatch.dll
。JNA会将调试信息发送到stdout,因此在作为服务运行时可能很难捕获它。您还可以使用-Djna.nounpack=true
阻止解包。谢谢,将在目标上测试并更新post。确认以下工作: