gpt4 book ai didi

java - 从 JNA jar 文件中提取 DLL 到自定义路径

转载 作者:行者123 更新时间:2023-11-30 06:48:48 25 4
gpt4 key购买 nike

我们Java Web Application部署的生产环境有几个权限限制,其中一个是不能写入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: 句柄无效

我已经验证在删除访问权限限制时成功提取了同一个 DLL,以确保这是我的问题的根源,但我想知道是否有任何方法可以指定该 DLL 必须位于的自定义路径提取到,因为我们可以写入驱动器 E:,例如。

最佳答案

您看到的 DLL 是 JNA 的 JNI 库,用于分派(dispatch) native 调用 [0] . JNA 会将库提取到临时文件夹,除非从 jna.boot.library.path 属性指定的目录中找到 [1] ,或使用 System.loadLibrary [2] .

可以使用jna.tmpdir 属性设置用于临时项目的目录[3] .例如:

java -jar program.jar -Djna.tmpdir=E:/temp

如果未设置jna.tmpdir,JNA 将使用java.io.tmpdir

请注意,在撰写本文时,JNA 将使用 File.mkdirs() 来创建 tmpdir 的目录结构,因此您无需确保文件夹存在。

关于java - 从 JNA jar 文件中提取 DLL 到自定义路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43774860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com