admin 管理员组文章数量: 887021
2024年1月9日发(作者:易语言图片处理)
ArcObjects + Java + IntelliJ IDEA + SpringBoot 服务发布集成测试一、软件准备1、GIS软件1、ArcGIS License Manager2、ArcGIS for Desktop 10.2.23、ArcObjects SDK for JAVA
注意:当安装完软件时,会向系统环境变量中增加两个环境变量信息AGSDESKTOPJAVA:C:Program Files (x86)ArcGISDesktop10.2AGSDEVKITJAVA:C:Program Files (x86)ArcGISDeveloperKit10.2注意!注意!注意!需要手工再Path的环境变量中增加两个路径%AGSDESKTOPJAVA%javajrebin%AGSDESKTOPJAVA%bin
2、JAVA软件1、jdk-8u281-windows-i586(必须要32位jdk)2、ideaIU-2019.3
注意:安装完32位的jdk,注意配置jdk的相关环境变量注意!注意!注意!如果已经安装过64的jdk,再安装32位的jdk时,电脑中会存在两个jdk版本,32和64位的两个版本,此时如果已经有别的系统配置使用了环境变量64位的,那么就不要再去配置32位的系统变量了,否则可能会把别的软件使用会破坏掉。环境变量中未配置32位的环境变量,而项目中又要使用,那我们怎么办呢?开发环境:只需要配置自己的idea软件指定到32位版本的jdk就可以了
生产环境:只需要执行jar包命令时加上32位的jdk的全路径就可以了:比如"C:Program Files (x86)Javajdk1.8.0_" -server -jar 二、SpringBoot项目配置1、新建SpringBoot项目第一步:新建
第二步:选择java版本为8
第三步:根据需求自主勾选,目前只是发布一个服务,只勾选一个Spring Web
第四步:设置工程名称及保存路径,完成工程创建
第五步:直接运行测试,看工程是否正常启动
2、配置JDK环境,指定32位版本的JDK第一步:打开工程配置页面,查看JDK配置信息
第二步:点击左侧列表:Platform Settings---》SDKs项,切换到SDK版本管理页
面第三步:点击+号新建一个SDK,指定到32位版本路径
第四步:SDK新建完成之后,切换到左侧列表的Project Settings-->Project项,
界面中Project SDK选择刚刚新建的SDK
第五步:点击左侧列表,切换到Modules项,设置Module SDK,选择刚刚新建的
SDK,此时32位JDK环境配置完成3、Maven方式引入进来ArcObjects的jar包第一步:在src--main--resources资源目录下面新建一个名为lib的文件夹,并把文件复制到新建的lib文件夹中文件去哪里找呢?它在arcgis desktop的安装目录下面C:Program Files (x86)
第二步:配置POM文件,引入本地jar包dependencies下面引入jar包${r}/src/main/resources/lib/
plugins下面引入插件,用于把本地引入的jar随着工程一起打包
至此,SpringBoot开发AE的准备工作已经全部就绪!三、代码开发1、项目启动时,AE许可初始化许可初始化代码/** * ae初始化 */public class AoInitUtil { /** * 初始化ae * 初始化ae或许可失败,会报错或者返回null * * @param aoInit
* @return */ public AoInitialize initializeEngine(AoInitialize aoInit) throws IOException
{ //初始化ae lizeVisualBeans(); //lizeEngine(); // 设置使用的arcgis产品和版本,使ao能运行在不同的arcgis环境下 VersionManager versionManager = new VersionManager(); // 第一个参数是arcgis产品编号:1=desktop,2=engine,5=server // 此参数可以通过枚举查看esriProductCode //PS:edm java版目前用desktop作为运行环境,而不能用ArcGIS_Engine_Windows_1041_152027,后者许可初始化时会报错 boolean s = rsion(1, "10.2.2");// rsion(nt(ConfigProperties// .getByKey("aoRuntimeProduct")), ConfigProperties// .getByKey("aoRuntimeVersion"));// rsion(1, "10.4"); aoInit = new AoInitialize(); //判断并使用哪个级别的许可,PS:目前应该只能用desktop相关的许可,也就是Advanced,Standard,Basic等 if
(uctCodeAvailable(censeProductCodeAdvanced) == censeAvailable) {
lize(censeProductCodeAdvanced); } else if
(uctCodeAvailable(censeProductCodeStandard) == censeAvailable) {
lize(censeProductCodeStandard); } else if
(uctCodeAvailable(censeProductCodeBasic) == censeAvailable) {
lize(censeProductCodeBasic); } else if
(uctCodeAvailable(censeProductCodeEngineGeoDB) == censeAvailable) {
lize(censeProductCodeEngineGeoDB); } else if
(uctCodeAvailable(censeProductCodeArcServer) == censeAvailable) {
lize(censeProductCodeArcServer); } else { aoInit = null; } return aoInit; }}
主应用启动代码@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) throws IOException { //初始化ae,ae许可初始化 //初始化ae或许可失败,会报错或者返回null AoInitUtil aoInitUtil = new AoInitUtil(); AoInitialize aoInit = null; aoInit = lizeEngine(aoInit); if (aoInit == null) { n("ae许可初始化失败!"); return; } (, args); }}
控制器发布微服务代码@RestControllerpublic class GisOperController { @GetMapping("/open") String openGdb() throws IOException { IFeatureWorkspace featureWorkspace =
kspaceFromFileMDB("C:"); List
FeatureClassInWorkspace(featureWorkspace); IQueryFilter qf = null; //qf=new QueryFilter(); //reClause("");// ISpatialFilter sf=new SpatialFilter();// metryByRef(null);// tialRel(atialRelIntersects); IFeatureClass fc = (0); int indexField_bsm = lds().findField("BSM"); IFeatureCursor cursor = (qf, false); IFeature feature = ature(); while (feature != null) { String bsm = ue(indexField_bsm).toString(); n(bsm); feature = ature(); }
e(cursor); return "ok"; }}打开MDB工作空间代码 /** * 根据mdb路径获取mdb的Workspace * * @param filePath * @return * @throws IOException */ public static IFeatureWorkspace getWorkspaceFromFileMDB(String filePath)
throws IOException { IWorkspaceFactory workspaceFactory=new AccessWorkspaceFactory(); IWorkspace workspace = new
Workspace(omFile(filePath, 0)); IFeatureWorkspace featureWorkspace = (IFeatureWorkspace) workspace; return featureWorkspace; }
获取工作空间中所有图层的代码 /** * 获取Workspace的所有FeatureClass(包括Dataset里面的) * * @param featureWorkspace * @return * @throws IOException */ public static List
getAllFeatureClassInWorkspace(IFeatureWorkspace featureWorkspace) throws
IOException { IWorkspace workspace = (IWorkspace) featureWorkspace; List
asets(FeatureDataset); (); IDataset dataset = (); IFeatureDataset featureDataset = null; while (dataset != null) { featureDataset = new IFeatureDatasetProxy(dataset); IFeatureClassContainer featureClassContainer = new
IFeatureClassContainerProxy(featureDataset); IEnumFeatureClass enumFeatureClassTarget =
sses(); ();
IFeatureClass featureClass = (); //遍历数据集里的要素类 while (featureClass != null) { (featureClass); featureClass = (); } e(enumFeatureClassTarget); e(featureDataset); dataset = (); } e(enumDataset); //然后遍历在数据库根目录的要素类 enumDataset = asets(FeatureClass); (); IDataset dataset2 = (); IFeatureClass featureClass2 = null; while (dataset2 != null) { featureClass2 = (IFeatureClass) dataset2; (featureClass2); dataset2 = (); } e(enumDataset); return featureClassResult; }四、部署测试1、开发环境调试运行:按照上面第二大步“二、SpringBoot项目配置”配置的项目,开发环境可以直接调试运行
2、打包部署运行:如果只安装了32位jdk,并配置了32位的环境变量可以:java -jar 如果同时安装了32位和64位的jdk,并配置了64位的环境变量可以:如果检测不到32位的jdk,可以在执行命令时指定32位jdk的路径信息"C:Program Files (x86)Javajdk1.8.0_" -server -jar 五、注意事项1、确保arcgis安装,并且授权可用2、必须是要有32位jdk的运行环境
3、同时安装了32位和64位两个版本的jdk,当cmd命令检测不到32jdk环境时,可以加上32位jdk的全路径进行执行命令:"C:Program Files (x86)Javajdk1.8.0_" -server -jar 错误1:Could not load native sfiedLinkError: no ntvinv in sfiedLinkError: no ntvinv in 原因1:Path环境变量中未增加下面两个路径%AGSDESKTOPJAVA%javajrebin%AGSDESKTOPJAVA%bin
错误2:Could not load native sfiedLinkError: C:Program Files (x86): Can't load IA 32-bit .dll on a AMD 64-bit sfiedLinkError: C:Program Files (x86): Can't load IA 32-bit .dll on a AMD 64-bit platform原因2:未正确使用32位jdk的命令执行jar包程序---根据默认jdk执行命令java -jar ---指定以32版本jdk命令执行jar包 "C:Program Files (x86)Javajdk1.8.0_" -server -jar
错误3:Exception in thread "main" ortedClassVersionError: org/springframework/boot/loader/JarLauncher : Unsupported version 52.0原因3:未能正常检测到环境变量中的jdk环境%AGSDESKTOPJAVA%javajrebin%AGSDESKTOPJAVA%bin这两个环境变量需要放置在正常的jdk环境变量的后面,或者放置在最后面C:Program Files (x86)Common
FilesOracleJavajavapath;%JAVA_HOME%bin;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;%SYSTEMROOT%System32WindowsPowerShellv1.0;%AGSDESKTOPJAVA%javajrebin;%AGSDESKTOPJAVA%bin
版权声明:本文标题:ArcObjects+Java+IntelliJIDEA集成 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1704807627h462815.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论