springboot 启动idl项目异常处理

文章介绍了如何通过配置maven来避免编译错误,涉及idltest__define.pro的编写,以及如何编译生成IdlHello.java。接着展示了测试接口的代码,用于调用IDL功能。最后提到了服务发布的命令行参数设置。
摘要由CSDN通过智能技术生成
# 集成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 
```
----
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值