日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

IDL学习记录和Java调用IDL方法

發(fā)布時間:2024/3/26 java 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IDL学习记录和Java调用IDL方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

IDL學(xué)習(xí)記錄和Java調(diào)用IDL方法

2018年02月06日 08:32:02?回首1949?閱讀數(shù):385更多

個人分類:?隨想

版權(quán)聲明:樂呵樂呵得了 https://blog.csdn.net/u010214568/article/details/79033685

先記錄一下最近的IDL學(xué)習(xí)經(jīng)歷。

IDL指的是ENVI、IDL的那個IDL,和我老婆吹牛,說是處理火星數(shù)據(jù)用的,事實可能就是如此。

從2018年1月7日開始,迫于項目的壓力,需要在10號前學(xué)會IDL,并且把兩個博士寫的遙感數(shù)據(jù)處理IDL代碼集成到項目中,壓力還是很大的。

大學(xué)的時候就有了解過IDL,只是一直沒有機會去耐心的學(xué)。這下也了卻了自己多年的心愿,并用4天的時間完成任務(wù)。

IDL的資料比較少,很多人在學(xué)習(xí)IDL的路上走過不少彎路,把我的經(jīng)歷記錄下來,一來是自我學(xué)習(xí)的記錄,二來能夠幫助希望入門IDL的朋友。

再說說IDL學(xué)習(xí)的一些方法和個人快速上手經(jīng)驗

個人比較喜歡看書,紙質(zhì)書,山東省圖書館借的,學(xué)習(xí)的主要資料也是這本書:《遙感二次開發(fā)語言IDL》徐永明編著。用了一上午和一下午的時間把第一、二、三、四、六、八章看了一遍,重點是第一、二、三、四章,用IDL編譯器自己動手把書上的例子用命令行敲一遍。第六、八章一頁一頁翻一遍,其他章節(jié)大致翻看一下。依照這個順序,肯定就能寫點簡單的IDL代碼了。

對于學(xué)習(xí)編程語言,我發(fā)現(xiàn)了一種比較好的方法來實現(xiàn):邊看書邊照著例子敲的“境界”,就是看紙質(zhì)書的同時,下載一本電子書。看理論知識的時候看紙質(zhì)書,學(xué)習(xí)例子的時候看電子書,學(xué)習(xí)例子的時候翻書是個比較累人和不方便的事。

《遙感二次開發(fā)語言IDL》這本書中缺少一個內(nèi)容,就是IDL對象,這個內(nèi)容可以在Esri的2016年的IDL培訓(xùn)教程中找到一點簡介。

下面在看看Java調(diào)用IDL的方法

可以使用idlexbr_assistant命令打開idl導(dǎo)出工具。

1.首先編寫idl類,只有編寫idl類這個工具才可以識別并導(dǎo)出com或者java,此處只說java,com類似

寫完后保存,保存名默認為helloworldex__define.pro

?

  • ;類的方法和過程定義:functon/pro 類名::方法名/過程名

  • FUNCTION helloworldex::HelloFrom, who

  • ? IF (N_ELEMENTS(who) NE 0) THEN BEGIN

  • ? ? message = "Hello World from " + who

  • ? ? RETURN, message

  • ? ENDIF ELSE BEGIN

  • ? ? message = 'Hello World'

  • ? ? RETURN, message

  • ? ENDELSE

  • END

  • ?
  • ?
  • ;類的方法和過程定義:functon/pro 類名::方法名/過程名

  • ;Init方法相當于IDL類的構(gòu)造函數(shù),要在類定義前,這個方法必須有

  • ;必須有返回值,1成功,0失敗

  • ;此處可以做一些初始化操作,比如初始化envi批處理模式、其他參數(shù)等

  • FUNCTION helloworldex::INIT

  • ? RETURN, 1

  • END

  • ?
  • ?
  • ;IDL類定義,類名為helloworldex,后面跟兩個下劃線和一個define

  • ;類的里面是一個結(jié)構(gòu)體,就是這樣的寫法,helloworldex作為結(jié)構(gòu)體署名

  • ;who和message是結(jié)構(gòu)體的兩個成員

  • ;$是續(xù)行符,相當于寫在一行上

  • ;IDL類默認有一個self表示本對象,相當于java中的this

  • ;self.who可以引用who成員

  • ;var = self.HelloFrom, 'Java'可以引用HelloFrom方法,

  • ;也可以定義過程,使用方法和function類似

  • PRO helloworldex__define

  • ? struct = {helloworldex, $

  • ? ? who: '' , $

  • ? ? message: ' ' $

  • ? ? }

  • END

  • 2.測試

    ?

    可以在IDL命令行編寫IDL代碼測試這個對象,當然要先編譯一下

    ?

  • IDL> obj = obj_new('helloworldex')

  • IDL> print,obj.HelloFrom()

  • Hello World

  • IDL> print,obj.HelloFrom('我說:')

  • Hello World from 我說:

  • IDL>

  • 3.導(dǎo)出

    ?

    測試通過后,IDL控制臺使用idlexbr_assistant命令打開Export Bridge Assistant(通俗翻譯,導(dǎo)出助手),導(dǎo)出的java類是idl的代理類,代理類的內(nèi)部還是調(diào)用了.pro的idl程序

    ?

    idlexbr_assistant

    ?

    這個助手也是個軟件,不要小看,也是以“工程”的方式管理。

    新建Java項目

    選擇保存的__define.pro文件,此處說明,此助手只支持導(dǎo)出__define.pro形式的IDL類

    保存此項目,設(shè)置導(dǎo)出的類和方法

    配置導(dǎo)出類的名稱和包名

    配置導(dǎo)出方法

    如果IDL類中有多個方法,可以只導(dǎo)出需要暴露的方法即可,不需要全部導(dǎo)出

    配置導(dǎo)出方法的參數(shù)

    工具欄第三個按鈕,build,生成HelloWorld1.java和HelloWorld1.class,.class沒什么用。

    下面說如何用java調(diào)用idl

    4.Java調(diào)用IDL功能

    把helloworldex__define.pro復(fù)制到IDL安裝目錄的lib文件夾中,我的是C:\Program Files (x86)\ITT\IDL\IDL80\lib

    在eclipse中創(chuàng)建java項目

    引用外部jar包,jar包存放在IDL安裝目錄下,此jar包的位置不能移動,移動后IDL代理類無法找到idl的程序,我的是C:\Program Files (x86)\ITT\IDL\IDL80\resource\bridges\export\java\javaidlb.jar

    把生成的包和.java復(fù)制到j(luò)ava項目中

    繼承這個類,實現(xiàn)此IDL jar包中提供的JIDLOutputListener接口,我創(chuàng)建了HelloWorld1Ex1類,有幾個注意的地方看注釋,比較簡單

    ?

  • package hello;

  • ?
  • import com.idl.javaidl.JIDLObjectI;

  • import com.idl.javaidl.JIDLOutputListener;

  • import com.idl.javaidl.JIDLString;

  • ?
  • public class HelloWorld1Ex1 extends HelloWorld1 implements JIDLOutputListener {

  • private static final long serialVersionUID = 1L;

  • private HelloWorld1 hello1;

  • ?
  • public HelloWorld1Ex1() {

  • //固定寫法

  • hello1 = new HelloWorld1();//1.實例化助手導(dǎo)出的類

  • hello1.createObject();//2.創(chuàng)建對象

  • hello1.addIDLOutputListener(this);//3.添加監(jiān)聽,不添加java控制臺不會打印IDL print的內(nèi)容

  • String strFromIDL = hello1.helloFrom(new JIDLString("我家寶寶")).stringValue();//調(diào)用

  • System.out.println("-------->來自IDL的問候:"+strFromIDL);

  • hello1.destroyObject();//JVM虛擬機不負責回收IDL代理對象的垃圾,需要我們自己回收

  • }

  • ?
  • @Override

  • /**

  • * 實現(xiàn)此接口,可以將IDL中的print輸出到j(luò)ava控制臺

  • */

  • public void IDLoutput(JIDLObjectI arg0, String arg1) {

  • System.out.println("IDL:>>"+arg1);

  • }

  • ?
  • public static void main(String[] args) {

  • HelloWorld1Ex1 ex1 = new HelloWorld1Ex1();

  • }

  • ?
  • }

  • 結(jié)果:

    ?

    ?

    -------->來自IDL的問候:Hello World from 我家寶寶

    5.如果是Web項目,因為此處IDL的jar包javaidlb.jar不能移動位置,發(fā)布tomcat后,會出現(xiàn)該jar包中的類找不到的情況,解決辦法是在配置tomcat的類共享類加載器。

    ?

    在tomcat的catalina.properties配置文件中,將shared.loader項配置為javaidlb.jar的絕對路徑




    就此結(jié)束,希望能幫助到需要的人。

    總結(jié)

    以上是生活随笔為你收集整理的IDL学习记录和Java调用IDL方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久91视频 | 欧美日韩黑人 | 91网站免费在线观看 | 99久久久无码国产精品免费蜜柚 | 99热这里只有精品在线 | 女人被男人躁得好爽免费视频 | 久久精品视频18 | 麻豆三级在线观看 | 色一区二区三区四区 | 白嫩情侣偷拍呻吟刺激 | 亚洲激情综合 | 宅男午夜影院 | 97超碰在线资源 | 日韩 欧美 国产 综合 | 99久久精品免费看国产四区 | 亚洲视屏 | 成人免费影片 | 免费色片| 樱井莉亚av | 亚洲综合激情五月久久 | 国产99久久久 | 伊人ab| av在线播放一区二区三区 | 三上悠亚一区二区在线观看 | 精品影视 | 日韩中文字幕有码 | www.中文字幕在线观看 | 无码av天堂一区二区三区 | 已满十八岁免费观看全集动漫 | 亚洲美女网站 | 日日操影院| 日本wwww视频 | 国产成人无码a区在线观看视频 | 欧美日韩精品一二三区 | 国产三级在线观看完整版 | 2023国产精品 | 欧美精品乱码99久久蜜桃 | 国产精品xxxxx | 日韩美女一级片 | 少妇日b| 午夜福利一区二区三区 | 四虎看黄 | 国产激情一区二区三区在线观看 | 精品美女久久久久 | 欧美丰满老熟妇xxxxx性 | 国产日韩欧美中文 | 红色假期黑色婚礼2 | 少妇按摩一区二区三区 | 麻豆传媒网 | 欧美日本一道 | 国产毛片基地 | 亚洲精品成人a | 黄色片美女 | 九一网站在线观看 | 国产精品成人无码免费 | 国产一区二区亚洲 | 色av一区二区 | 日日撸夜夜操 | 久久久人 | 久久亚洲综合色图 | 欧美xxxxxhd | 娇小6一8小毛片 | 中文av网站| 奇米影视在线 | 午夜精品久久久久久久99黑人 | xxxx久久 | 绝顶高潮videos合集 | 欧美日本一区 | 视频在线观看免费大片 | 国产精品500部 | 国产你懂 | 中字幕视频在线永久在线观看免费 | 色8久久| 久操成人 | av无码一区二区三区 | 国产精选一区二区三区 | 日韩在线播放中文字幕 | 免费无码国产v片在线观看 三级全黄做爰在线观看 | 人妻一区二区三区免费 | 草草影院ccyycom | 青青成人| 精品一区二区三区视频日产 | 国产精品手机视频 | 欧美成人吸奶水做爰 | 中文字幕在线字幕中文 | 国产伦精品一区二区三 | 亚洲乱人伦 | 亚洲精品久久夜色撩人男男小说 | 日本精品视频一区 | 自拍偷拍激情小说 | 2019天天干天天操 | 国产成人在线视频观看 | 黄色h视频| 无码乱人伦一区二区亚洲 | 中日韩精品视频在线观看 | 亚洲欧美综合 | 亚洲h视频在线观看 | 狠狠操狠狠操狠狠操 | 黄色国产视频 |