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

时间:2017-05-04 05:52:12

标签: java tomcat dll jna

我们部署Java Web Application的生产环境有几个权限限制,其中一个无法在驱动器C中写入:

我们最近添加了jna-4.1.0.jar和jna-platform-4.1-0.jar依赖项以便能够读取Windows注册表但是我注意到每次服务器(Tomcat v7.0)都已启动DLL文件被解压缩到Tomcat临时文件夹,出现以下错误:

location data PM10 O3 NO2 0 Nabel_LUG 01.07.2007 01:00 27.0 804.0 35.0 1 Nabel_LUG 01.07.2008 01:00 25.0 540.0 34.0 2 Nabel_LUG 01.07.2009 01:00 22.0 651.0 32.0 3 Nabel_LUG 01.07.2010 01:00 21.0 652.0 33.0 4 Nabel_LUG 01.07.2011 01:00 21.0 683.0 34.0 5 Nabel_LUG 01.07.2012 01:00 21.0 668.0 32.0 6 Nabel_LUG 01.07.2013 01:00 18.0 707.0 31.0 7 Nabel_LUG 01.07.2014 01:00 15.0 366.0 29.0 8 Nabel_LUG 01.07.2015 01:00 18.0 804.0 30.0 9 Nabel_LUG 01.07.2016 01:00 16.0 550.0 28.0 10 Nabel_LUG 01.07.2017 01:00 24.0 45.0 37.0 11 Nabel_MAG 01.07.2007 01:00 26.0 607.0 22.0 12 Nabel_MAG 01.07.2008 01:00 23.0 416.0 22.0 13 Nabel_MAG 01.07.2009 01:00 21.0 433.0 21.0 14 Nabel_MAG 01.07.2010 01:00 19.0 527.0 21.0 15 Nabel_MAG 01.07.2011 01:00 24.0 540.0 21.0 16 Nabel_MAG 01.07.2012 01:00 21.0 432.0 20.0 17 Nabel_MAG 01.07.2013 01:00 19.0 494.0 19.0 18 Nabel_MAG 01.07.2014 01:00 15.0 259.0 18.0 19 Nabel_MAG 01.07.2015 01:00 19.0 596.0 20.0 20 Nabel_MAG 01.07.2016 01:00 15.0 363.0 18.0 21 Nabel_MAG 01.07.2017 01:00 22.0 65.0 24.0

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

1 个答案:

答案 0 :(得分:4)

您看到的DLL是用于分发本机电话[0]的JNA的JNI库。除非从jna.boot.library.path属性[1]System.loadLibrary [2]指定的目录中找到,否则JNA会将库提取到临时文件夹。

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

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

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

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