Could not load native libraries

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