1. 程式人生 > >Eclipse下Java Card開發總結

Eclipse下Java Card開發總結

近來專案要做CPU卡的開發,如果用真實的CPU卡測試,多次操作錯誤後卡會被鎖死,既浪費資源也不利於開發。因此想到是否有模擬的智慧卡操作呢,網上一搜還真有,用Java模擬智慧卡,叫做“Java Card”開發。

  1. 環境搭建
    網上介紹的資料比較亂,大體歸納起來主要是給Eclipse安裝兩個外掛: JCOP和JCDE外掛。關於這兩個外掛的安裝可以參考博文“JavaCard開發環境搭建” https://blog.csdn.net/jiangbo1984/article/details/50920926
    這裡需要說明的是這兩個外掛對應的是兩種開發方式,使用其中一種即可,也可以兩種都安裝。其中的eclipse-jcde-0.2.zip可以使用在新版本的JDK和Eclipse上(我的64位JDK1.8和Eclipse-Mars測試是沒問題的,關於這種方式在以後的文章裡再介紹)。
    對於下載的JCOP Tools外掛,使用就比較悲劇了,按照網上的文章介紹,把下載的com.ibm.bluez.jcop.eclipse_3.1.2.zip檔案解壓後,plugins目錄下的com.ibm.bluez.jcop.eclipse_3.1.2資料夾拷貝到Eclipse的plugins目錄下,features目錄下的com.ibm.bluez.jcop.eclipse_3.1.2資料夾拷貝到Eclipse的features目錄下,再把com.ibm.bluez.jcop.eclipse.prefs檔案拷貝到工作空間workspace.metadata.plugins\org.eclipse.core.runtime.settings目錄下,然後開啟Eclipse軟體,並沒有看到新建工程裡有Java Card型別。按照網上說的開啟命令列,在Eclipse所在目錄,輸入命令“eclipse -clean”啟動,結果發現外掛還是沒有顯示:
    工程型別


    想起來網上說的必須得使用JDK1.5,便決定換JDK1.5試試,下載網址:https://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase5-419410.html
    這裡下載的是32位版本jdk-1_5_0_22-windows-i586-p.exe檔案(64位的試過了也不行)。因為我電腦C盤已經安裝JDK1.8了,這裡把JDK1.5安裝到D:\Program Files (x86)\Java目錄下:
    JDK安裝路徑
    為安全起見,查詢一下java版本,沒有“64 bit”字樣就是32位的(之前就被網上坑了,說是32位版本,結果不能用,一查版本資訊是64位的):
    JKD版本資訊

    問題又來了,新的Eclipse還不支援JDK1.5,看來這個外掛很老了,網上說新版本已經收費了。沒辦法只能下載再老點的Eclipse,juno版本正好最低要求JDK1.5,下載網址:https://www.eclipse.org/downloads/packages/release/
    把下載的eclipse-jee-juno-SR2-win32.zip解壓到D盤,如果直接啟動,還是用預設的JDK1.8,這裡需要指定使用JDK1.5啟動,修改eclipse.ini檔案,注意路徑一定要對應好:
    修改啟動引數
    然後又按照上述步驟安裝一遍com.ibm.bluez.jcop.eclipse_3.1.2外掛,結果還是顯示不了。難道Eclipse版本還是新,沒辦法,又下了一個indigo版本,檔案為eclipse-jee-indigo-SR2-win32.zip。這次再安裝一遍com.ibm.bluez.jcop.eclipse_3.1.2外掛,這次終於成功了:
    出現Java Card工程

    真不容易啊,趕緊建立一個工程試一下吧。

  2. 新建工程測試
    新建一個專案,選擇“Java Card Project”型別,然後輸入工程名稱:
    Java Card Project
    下一步,選擇對應的配置資訊,先按預設的來吧:
    預設配置
    再下一步,注意要選擇一個模板,否則建立的是一個空專案:
    選擇模板
    然後輸入包名和類名:
    包名和類名
    下一步,輸入Package AID和Applet AID,這個對應是卡的開發商的編號,格式有要求的,不能隨便輸入:
    Package AID和Applet AID
    點選完成,系統會自動建立一個簡單的應用:
    生成程式碼

  3. 執行測試
    執行一下吧,右鍵專案選擇Run configurations…,新建一個配置:
    新建配置
    選擇Generic JCOPv2.2.1:
    選擇模擬器
    然後點選“Run”執行:
    執行結果
    說明啟動成功了,下面輸入“/select+AID”命令選擇我們模擬的卡,這裡的AID要替換為建立工程時輸入的Applet AID:
    選擇智慧卡
    卡選擇成功後,就可以使用“/send APDU”傳送APDU命令了。傳送什麼好呢,看CPU卡初始化時有個“選擇3F00檔案 00A40000023F00”步驟,測試一下吧:
    傳送APDU
    呀,指令不被支援啊,看看程式碼裡有這行:
    程式碼顯示
    看來還得自己處理啊,以後有時間再說吧,今天先寫到這裡。。。