如何配置YAJSW在磁盘上查找jnidispatch.dll?

时间:2016-01-28 13:51:55

标签: java dll jna yajsw

我们正在使用YAJSW将我们的Java应用程序包装为Windows服务。在测试工作站映像时,企业McAfee Antivirus会发出警告,因为在启动服务时,jnidispatch.dll会从jna-4.1.0.jar复制到临时文件夹中的新名称。

将dll签名添加到防病毒规则可防止出现showstopping错误,但每次都会弹出严重警告。

我们尝试将jnidispath.dll复制到C:\ DLLfolder并向wrapper.conf添加以下行:

wrapper.java.additional.4 = -Djna.boot.library.path = C:/ DLLfolder /

然后我们将C:\ DLL文件夹添加到Windows系统%PATH%并重新启动Windows。

但是,当监视Windows服务启动时,我们仍然可以看到从Jar中提取的DLL而不是防病毒软件。

YAJSW代码native.java中的注释说:

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 个答案:

答案 0 :(得分:0)

我确认我们通过以下行动解决了问题:

1)将-Djna.nounpack = true添加到wrapper.conf

2)从JAR中删除了2个jnidispatch.dll 32位和64位DLL

3)将DLL放在Windows路径上

请注意,要安装Windows服务,需要使用jnidispatch.dll。

非常感谢technomage!