雖然接觸Engine Java的時間比較長,也接觸過用戶的一些問題,但是一般都是直接從ArcObjects SDK for Java的示例工程中找一個,然後測試用戶代碼,並沒有自己動手搭建過Engine Java工程,尤其是帶控件的,今天正好有用戶問起,就動手搭建工程測試一下。現把詳細的流程寫下來,希望對剛剛開始進行Engine Java開發的用戶有所幫助。
一、 環境的準備
1,Engine Java 的環境配置:
安裝Java JDK,ArcObjects SDK 10.5的系統需求:支持Java JDK 8 Update 65以及之後的版本,注意必須是32位。
安裝Java開發所需要的IDE,我用的是Mars.2 Release (4.5.2) Eclipse。
安裝ArcObjects SDK for Java 10.5(當然之前需要先安裝好ArcGIS Engine 10.5),在ArcGIS Engine和ArcObjects SDK for Java的安裝過程中會自動向操作系統的環境變量中添加環境變量,通常我都沒有再手動設置過環境變量,運行示例程序也能成功,假如運行不成功,有可能需要進行環境變量的配置,參考技術文章:
2,安裝ArcGIS PlugIn
ArcGIS PlugIn位於C:\Program Files (x86)\ArcGIS\DeveloperKit10.5\java\tools\eclipse_plugin\arcgis_update_site\arcobjects (您機子上AO SDK的安裝路徑)文件夾。Eclipse裏安裝plugin插件流程如下:
點擊Help->Install New Software:
彈出界面中選擇Local,然後選擇該文件夾:
接着會彈出下面界面(由於我本機已經裝好了,沒有這個界面,所以我找了個10.2的虛擬機截圖):
這裏有一點需要注意:開始安裝完成時,會提示Esri ArcObjects Palette無法安裝,缺少相應的文件,這時需要把ve文件夾中的內容拷貝到Eclipse軟件路徑的Features文件夾下(比如D: \Java\eclipse-java-mars-2-win32\eclipse\features),然後再次安裝就可以成功了。
二、創建Engine Java模版工程
在File->New->Project,就會彈出下面界面:
如果進行Engine開發的話,可以直接選擇ArcObjects Project,如果進行Add-in擴展的話則選擇下面的模版。
下一步可以選擇是進行Map、Scene還是Globe顯示,此外還可以直接添加工具和mxd:
Next,彈出初始化許可界面,可以勾選要用的主許可和擴展許可:
點擊Finish,然後運行該BasicViewer.java即可彈出下面界面:
這樣一個模版工程就搭建好了,有沒有注意到,一句代碼都木有寫!!!但還是有用戶說,雖然Esri提供的模版既方便又快捷,但是我不想用怎麼辦?比如我就想自己手動搭建一個這樣的界面,好吧,接着往下看。
三、創建自定義界面
如果想直接拖動MapBean、TOCBean、ToolbarBean等控件進行設計界面的話,還需要安裝WindowBuilder,以Mars.2 Release (4.5.2) Eclipse爲例,我用的WB_v1.8.0_UpdateSite_for_Eclipse4.5.zip,可以點擊下載。
下載成功後,繼續用上面安裝ArcGIS PlugIn的方法安裝,點擊Archive,選擇本地的WB所在文件即可:
安裝完成後,新建一個JFrame,打開Design界面:
也可以選中Open With->WindowBuilder Editor,打開設計界面:
在Palette 處點擊會彈出一個上下文菜單,選擇Add category,新建一個名爲ArcObjects的空category:
點擊剛剛新建的ArcObjects,選擇Import Jar:
打開arcobjects.jar(C:\Program Files (x86)\ArcGIS\Engine10.5\java\lib)所在路徑,會彈出所包含的控件,在可能用到的控件前打鉤即可:
點擊OK之後,返回Design界面,就可以看到ArcObjects的這些控件了,可以直接使用:
雙擊控件,然後在窗體中選擇相應的佈局即可:
界面設計好後可以添加工具,選中ToolbarControl->Custom,添加Item:
界面設計好後回到代碼界面,可以進行許可的初始化,在代碼處點擊,選擇ArcGIS->Insert License Code:
彈出許可界面,選擇所需的許可:
點擊OK,會在代碼中添加下面初始化許可的函數:
void initializeArcGISLicenses() {
try {
com.esri.arcgis.system.AoInitialize ao = new com.esri.arcgis.system.AoInitialize();
if (ao.isProductCodeAvailable(com.esri.arcgis.system.esriLicenseProductCode.esriLicenseProductCodeEngine) == com.esri.arcgis.system.esriLicenseStatus.esriLicenseAvailable)
ao.initialize(com.esri.arcgis.system.esriLicenseProductCode.esriLicenseProductCodeEngine);
} catch (Exception e) {
e.printStackTrace();
}
}
最後再在程序入口處添加EngineInitializer.initializeVisualBeans();即可運行成功:
文章的最後強調一點:如果沒有安裝ArcGIS PlugIn或者使用模版的話,需要在Project->Properties->Java Build Path,右側Libraries,添加arcobjects.jar和jre,如圖: