首页 / 浏览问题 / 组件GIS / 问题详情
iobject通过数据集名称获取到的数据集是空对象
TYH
31EXP 2023年12月13日

iobject通过数据集名称获取到的数据集是空对象,但是在另外一个电脑上却是可以获取到数据集对象的,这是否跟配置的许可有关系?

1个回答

您好,通过数据集名称从 Datasets 获取 Dataset 对象之前,建议先使用 Datasets.contains() 接口判断是否包含该名称的数据集,若 contains 接口返回为 false,再使用该名称去获取数据集,返回结果就肯定是 null 了。

其次,若 contains 接口返回结果为 true,建议在通过名称获取数据集的时候不执行强制类型转换,看返回结果是否为 null。

希望可以帮到您。
2,253EXP 2023年12月13日
数据集是存在的,只是在我的电脑环境试下执行这段代码返回的结果是null,在另外一个电脑上执行这段代码就能把数据返回回来,这样想问下会什么情况下会出现这样的结果,是否会说许可的问题?
不会是许可的问题,若是许可的问题,new Workspace 的时候就会抛许可相关的异常了。

您的意思是在您本地执行 Datasets.contains() 返回的结果是 true?
同样的代码和输入同样的参数,有一个电脑上执行Datasets.contains()返回的是true,另外一个电脑上执行Datasets.contains()返回的是false

该情况可能是由于本地系统库的依赖存在缺失的原因,建议参考以下流程检查 iObjects Java 组件依赖的系统库是否存在缺失的情况:

  • 若是在 Windows 操作系统:可以使用第三方依赖检查工具 dependency walker 来检查 iObjects Java 组件的 *.dll 是否存在依赖缺失,主要检查 WrapjCore.dll、SuBase.dll、SuEngine* 以及 SuFileParser* 等库;
  • 若是在 Linux 操作系统:可以使用 ldd -r 命令对 libWrapjCore.so、libSuBase.so、libSuEngine* 以及 libSuFileParser* 等库文件进行依赖检查。

我两个电脑用的这些依赖都是一样的

您好,建议仔细阅读上面提供的方案,不是检查是否存在那些dll库文件,而是使用第三方依赖检查工具检查那些库文件是否有系统依赖库缺失,若确认无依赖缺失情况,请将第三方依赖检查工具的检查结果截图附上。

用dependency walker工具打开*.dll文件,确实看到有报错信息,这样需要怎么处理?是要重下载iobject的依赖包么?

您好,从上述您提过的截图可以看到确实存在系统库有缺失依赖的情况,具体缺少哪些依赖库还需要进一步分析,建议私信我您的电话,或者您直接拨打 SuperMap 技术支持热线 4008900866,让我们远程看下,进一步分析异常原因
...