# 集成IDL ## 配置maven 防止编译报错,实际自测需要安装IDL ``` <dependency> <groupId>javaidlb</groupId> <artifactId>javaidlb</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/resources/lib/javaidlb.jar</systemPath> </dependency> ``` ##编写idl idltest__define.pro 放入IDL所在lib目录 ``` ;类的方法和过程定义:functon/pro 类名::方法名/过程名 FUNCTION idltest::HelloFrom, who IF (N_ELEMENTS(who) NE 0) THEN BEGIN message = "Hello wf from " + who RETURN, message ENDIF ELSE BEGIN message = 'Hello wf' RETURN, message ENDELSE END ;类的方法和过程定义:functon/pro 类名::方法名/过程名 ;Init方法相当于IDL类的构造函数,要在类定义前,这个方法必须有 ;必须有返回值,1成功,0失败 ;此处可以做一些初始化操作,比如初始化envi批处理模式、其他参数等 FUNCTION idltest::init RETURN, 1 END ;IDL类定义,类名为helloworldex,后面跟两个下划线和一个define ;类的里面是一个结构体,就是这样的写法,helloworldex作为结构体署名 ;who和message是结构体的两个成员 ;$是续行符,相当于写在一行上 ;IDL类默认有一个self表示本对象,相当于java中的this ;self.who可以引用who成员 ;var = self.HelloFrom, 'Java'可以引用HelloFrom方法, ;也可以定义过程,使用方法和function类似 PRO idltest__define struct = {idltest, $ who: '' , $ message: ' ' $ } END ``` ##编译生成IdlHello.java (idlexbr_assistant) ``` package idl; import com.idl.javaidl.JIDLConst; import com.idl.javaidl.JIDLObject; import com.idl.javaidl.JIDLString; public class IdlHello extends JIDLObject { private static String IDL_CLASS = "idltest"; private static String OPS_NAME = "Default_Process_Name"; public IdlHello() { super(IDL_CLASS, OPS_NAME); } public JIDLString hello(JIDLString WHO) { final int ARGC = 1; Object[] argv = new Object[ARGC]; int[] argp = new int[ARGC]; Object result = null; final int FLAGS = 0; argv[0] = WHO; argp[0] = JIDLConst.PARMFLAG_CONST; result = super.callFunction("HELLOFROM", ARGC, argv, argp, FLAGS); return (JIDLString) result; } } ``` ## 编写测试接口 ``` @GetMapping("/testTif") @ApiOperation("测试tif解析调用") public ResponseMessage<String> testTif(@RequestParam String text) { IdlHello idlHello = new IdlHello(); idlHello.createObject(); //添加监听,不添加java控制台不会打印IDL print的内容 idlHello.addIDLOutputListener(new TifAnalyseService()); String strFromIDL = idlHello.hello(new JIDLString(text)).stringValue(); idlHello.destroyObject(); return ResultUtil.ok(strFromIDL); }``` ---- ## 服务发布使用 增加参数,根据服务器类型修改启动参数(心累,资源太少了) ``` java -classpath "D:\coding\IDL\IDL85\resource\bridges\export\java\javaidlb.jar" -DBMLDir="D:\coding\IDL\IDL85\bin\bin.x86_64" -DJavaPALDir="D:\coding\IDL\IDL85\bin\bin.x86_64" -jar water-one-inspection-manage.jar ``` ----
springboot 启动idl项目异常处理
最新推荐文章于 2024-10-05 15:17:03 发布
文章介绍了如何通过配置maven来避免编译错误,涉及idltest__define.pro的编写,以及如何编译生成IdlHello.java。接着展示了测试接口的代码,用于调用IDL功能。最后提到了服务发布的命令行参数设置。
摘要由CSDN通过智能技术生成