首页 / 浏览问题 / 组件GIS / 问题详情
Iobjacts java叠加分析报错
8EXP 2023年08月29日

使用产品:iobject for java  10.2.1-20428-92245

操作系统:win11 x64

在后端使用iobjects实现叠加分析接口时报错:

java.lang.UnsatisfiedLinkError:com.supermap.analyst.spatialanalyst.OverlayAnalystNative.jni_GeometrysIntersect([J[JD)[J,

方法内接收到的Geometry[]数据是通过处理前端传过来的geoJson数组拿到的,geojson数组直接拿去调iserver的叠加分析接口可以正常拿到返回结果,目前预计是处理后的数据有问题,麻烦大佬帮看看是咋回事

入参debug截图:

 OverlayResult[] overlayResult = OverlayAnalyst.intersect(sourceGeometries, targetGeometries, tolerance);
//方法执行后捕获得到下图所示的错误 

//处理获取 Geometry[]数据的方法 

private Geometry[] getGeometryList(List<String> list){
        List<Geometry> geometryList = new ArrayList<>();
        for(String geometryStr : list){
            Geometry geometry = Toolkit.GeoJsonToGeometry(geometryStr);
            if (!Objects.isNull(geometry)) {
                geometryList.add(geometry);
            }
        }
        return geometryList.toArray(new Geometry[0]);
    }

将前端原始数据拿去调iserver的叠加分析接口正常拿到数据返回:

问题关闭原因: 问题已解决

1个回答

您好,基于 iObjects Java 组件开发的程序运行抛 java.lang.UnsatisfiedLinkError 的异常信息,通常是由于 iObjects Java 组件环境没有配置好的原因,建议根据 iObjects Java 组件帮助文档中关于依赖环境的配置描述进行环境配置。如:

  • Windows:需配置 iObjects Java 组件的 Bin 目录好系统环境变量;
  • Linux:基于 iObjects Java 组件提供的 predetection.sh 环境检查脚本确认 iObjects Java 组件环境无误。

希望可以帮到您。

2,253EXP 2023年08月29日

你好,这边是使用iobject组件包里的一键安装脚本进行的安装和环境变量配置呢,看了下环境变量应该是没问题的,面积量算、sql和几何查询等功能都可以正常使用,我先对照下你给出的对照表对照下错误对应的编号以及原因看看吧 laugh

Windows操作系统下看您的配置应该没问题,可以尝试把iObjects Java组件Bin目录配置到IDEA的调试脚本中,如:

若已在IDEA中配置 iObjects Java 组件的环境变量后依然会抛 java.lang.UnsatisfiedLinkError 异常信息的话,就用 Dependency Walker (https://dependencywalker.com/)检查下是否系统底层缺少依赖库导致的异常。

IDEA中配置环境变量也是不行呢,这边并没有编译生成exe或dll也无法使用 Dependency Walker 来检测呢,我试着编译成dll测试下看看
是这样的,iObjects Java 组件的 Bin 目录下有一些 Su*.dll,这些是 GIS 核心功能库,用 Dependency Wallker 检查这些 Su 开头的 dll 是否存在系统依赖的问题。

好的,我试试看,请问可以列举一下要重点要检查的嘛,找了一下看到不少个 Su*.dll 文件,随便检查一个电脑就卡住半小时动不了broken heart

建议重点检测下 WrapjAnalyst.dll、SuAlgorithm.dll、SuBase.dll 以及 WrapjCore.dll

不好意思之前忙别的任务去了,通过检查这几个dll得到了如下记录所示的问题,感觉也不是以下dll缺失导致的问题,在今天查看项目的依赖发现使用的是10.1版本的jar包,尝试切换了supermap-iobjectsjava-10.1.0-18927-82297版本并重新配置环境变量和许可,还在IDEA的环境变量配置处添加上iobjects的路径,之后可以正常调用叠加分析接口不再出现报错,问题得以解决laugh

yes问题解决了就好

...