使用iserver开发时,有WrapjGeo错误

0 投票

错误日志如下:

java.lang.UnsatisfiedLinkError: no WrapjGeo in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at com.supermap.data.Environment.LoadWrapJ(Unknown Source)
        at com.supermap.data.InternalHandle.<clinit>(Unknown Source)
        at com.jyc.base.Util.SuperMapUtil.datasource(SuperMapUtil.java:205)

在出现错误的代码中,是从SuperMapUtil.java的

WorkspaceConnectionInfo connectionInfo = new WorkspaceConnectionInfo("D:\\xxx\\xxx.smwu");

处报出来的。

同时,还出现下面的错误日志:

Caused by: java.lang.UnsatisfiedLinkError: com.supermap.data.WorkspaceConnectionInfoNative.jni_New()J
        at com.supermap.data.WorkspaceConnectionInfoNative.jni_New(Native Method) ~[com.supermap.data.jar:na]
        at com.supermap.data.WorkspaceConnectionInfo.<init>(Unknown Source) ~[com.supermap.data.jar:na]
        at com.jyc.base.Util.SuperMapUtil.datasource(SuperMapUtil.java:205) ~[classes/:na]

开发工具是:IntelliJ IDEA 15.0.1

为objectsjava配置了环境变量,将下面的连接添加到了path变量里面:D:\xxx\support_win_x64\objectsjava\bin

请问出现如上错误日志的原因是什么,请大神协助处理下,多谢。

6月 21, 2017 分类:  1610次浏览 | 用户: 黑暗中的舞者 (7 分)
重新分类 6月 21, 2017 用户:胡林

1个回答

0 投票
这个错看起来是缺少依赖库导致的。但是具体原因不好判断,请提供一些更详细的信息。

比如操作系统,主要使用的功能,什么情况下报的这个错,iServer的版本。以便定位问题原因。
6月 21, 2017 用户: 袁子翔 (5 分)

win10操作系统,使用的iServer java api开发功能,

WorkspaceConnectionInfo connectionInfo = new WorkspaceConnectionInfo("D:\\xxx\\xxx.smwu");处报出的错误,其中,xxx.smwu是我建的文件型工作空间。

iServers 8.1.1版本

看错误信息确实像缺少依赖库,不过特意注意这个事情了,将所需的依赖都添加上了。
java.lang.UnsatisfiedLinkError: no WrapjGeo in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
Caused by: java.lang.UnsatisfiedLinkError:          com.supermap.data.WorkspaceConnectionInfoNative.jni_New()J

根据这俩,所以需要配置iObjects java运行环境
另外注意你使用的WorkspaceConnectionInfo是iObjects java的还是iServer的,名字一样但是不是一个包,如果是com.supermap.data下的,那它就是组件的类。

不过视具体使用,要打开本地数据都使用到了iObjects java,iServer最终也是调用iObjects java的,建议直接使用iObjects java,如果非要这么用,那么需要引用iObjects Java所有相关包,并配置iObjects java运行环境,即jvm启动参数里的classpath之类的路径里要有java组件的目录,一般是设置在环境变量的path里、JAVA_OPTS里 或者 运行程序时增加jvm参数,比如iServer就把iObjects java路径写在了批处理/shell脚本里了。

开发时,建议配置环境变量。当然,视不同工程类型和IDE可能需要在IDE里做一些设置,比如eclipse里的java web工程,可以在编辑窗口右键-调试设置-对应工程的调试环境里设置jvm启动参数。
ps:改完环境变量需要重启eclipse,否则eclipse读不到改变后的环境变量。
...