Ser*_*ino 4 java dll tomcat jna
我们的Java Web应用程序部署的生产环境有几个权限限制,其中之一是无法在C盘写入:
我们最近添加了 jna-4.1.0.jar 和 jna-platform-4.1-0.jar 依赖项,以便能够读取 Windows 注册表,但我注意到每次启动服务器(Tomcat v7.0)时都会提取一个 DLL 文件到Tomcat临时文件夹,出现以下错误:
java.lang.UnsatisfiedLinkError: C:\Program Files\Apache Software Foundation\Tomcat 7.0\temp\jna-1319675979\jna1892288885647543043.dll: The handle is invalid
我已经验证,当访问权限限制被删除时,相同的 DLL 会被成功提取,以确保这是我的问题的根源,但我想知道是否有任何方法可以指定必须将该 DLL 提取到的自定义路径,例如,因为我们可以在驱动器 E: 中写入。
您看到的 DLL 是 JNA 的 JNI 库,用于调度本机调用[0]。jna.boot.library.pathJNA 会将库提取到临时文件夹,除非从属性[1]或System.loadLibrary [2]指定的目录中找到。
jna.tmpdir可以使用属性[3]设置用于临时项目的目录。例如:
java -jar program.jar -Djna.tmpdir=E:/temp
Run Code Online (Sandbox Code Playgroud)
如果jna.tmpdir未设置,JNA 将使用java.io.tmpdir.
请注意,在撰写本文时,JNA 将用于File.mkdirs()创建 的目录结构tmpdir,因此您无需确保文件夹存在。
| 归档时间: |
|
| 查看次数: |
2280 次 |
| 最近记录: |