标签:load lang java String Could System libraries path tem
Could not load native libraries.
java.lang.UnsatisfiedLinkError: no ntvinv in java.library.path
java.lang.UnsatisfiedLinkError: no ntvinv in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1119)
at com.esri.arcgis.interop.NativeLoader.loadLibrary(Unknown Source)
at com.esri.arcgis.system.EngineInitializer.initializeEngine(Unknown Source)
at com.service.ArcGisService.initArcGISLicense(ArcGisService.java:98)
使用Java调用ArcGis GP工具初始化EngineInitializer.initializeEngine()时,出现如上错误,真是把人折腾S,安装了ArcGIS10.2_Desktop、ArcGIS_Server 10.2、ArcEngine10.2、ARCObject SDK for Java等等,配置了环境变量%AGSDESKTOPJAVA%\bin、%AGSDESKTOPJAVA%\java\jre\bin、%AGSSERVER%\bin等等还是不能解决我的问题。
后来发现只是Tomcat无法加载arcgis提供的dll,那么在myeclipse中引用,这个问题就得以解决,如下图:
可是目前我使用的myeclipse2017又找不到“app to library path”,所以只能通过代码加载去实现,如下:
String path="C:\\Program Files (x86)\\ArcGIS\\Desktop10.2\\bin";
//将此目录添加到系统环境变量中
addDirToPath(path);
//加载相应的dll文件,注意要将'\'替换为'/'
System.load(path.replaceAll("\\\\","/")+"/AfTopoGp.dll");
System.out.println(System.getProperty("java.library.path"));
EngineInitializer.initializeEngine();
。。。。。。。。。
private void addDirToPath(String s){
try {
//获取系统path变量对象
java.lang.reflect.Field field=ClassLoader.class.getDeclaredField("sys_paths");
//设置此变量对象可访问
field.setAccessible(true);
//获取此变量对象的值
String[] path=(String[])field.get(null);
//创建字符串数组,在原来的数组长度上增加一个,用于存放增加的目录
String[] tem=new String[path.length+1];
//将原来的path变量复制到tem中
System.arraycopy(path,0,tem,0,path.length);
//将增加的目录存入新的变量数组中
tem[path.length]=s;
//将增加目录后的数组赋给path变量对象
field.set(null,tem);
} catch (Exception e) {
e.printStackTrace();
}
}
如此便可以解决这个问题。
总结:
1、只需按照ArcGIS_Desktop,修改指向按照路径;
2、JDK、Tomcat需要使用32位版本;
安装破解安装包:https://download.csdn.net/download/zhuc_dongyc/11106729
标签:load,lang,java,String,Could,System,libraries,path,tem 来源: https://blog.csdn.net/zhuc_dongyc/article/details/89227078
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。