Thursday, May 23, 2013

在Ubuntu 12.04 LTS中使用OpenJDK及Oracle Java讀取健保卡 - 3

本系列文章的重頭戲來了,因為openjdk和和oracle jdk雖然有99%以上的相似程式,但有些應用程式就限定要用oracle jdk,因此本文要來介紹此問題。
而在Ubuntu使用oracle jdk來讀取智慧卡最大的問題原先以為是讀卡機裝置權限的問題,在經過幾週的搜尋之後,終於發現到是pcsc函式庫路徑的問題,感謝OpenSC網站上的資料

首先將函式庫連結處理好。
$ locate libpcsclite.so
-------看看libpcsclite.so的實際檔案放在哪
-------以下以我的機器為例(Ubuntu 12.04 LTS 64bits)
$ sudo mkdir /usr/lib64
-> 建立此目錄的原因是Ubuntu不管是32位元或64位元都只有/usr/lib的資料夾
-> 而Oracle JDK 64位元版本只認/usr/lib64,故要建立如上資料夾
-> 但在Centos 64位元的機器上原本就有
-> 若是32位元的系統只要以下指令即可
$ sudo ln -s /lib/x86_64-linux-gnu/libpcsclite.so.1.0.0 /usr/lib/libpcsclite.so

接下來若要安裝Oracle JDK有兩種方式,其一是從官網中下載並手動設定。另一種方式則是使用ppa提供的自動安裝程式!在此介紹ppa的方法。


  • 首先移除所有openjdk套件
  • $ sudo apt-get purge openjdk*
    

  • 接下來加入ppa套件庫(ppa:webupd8team/java)
  • $ sudo add-apt-repository ppa:webupd8team/java
    $ sudo apt-get update
    $ sudo apt-get install oracle-java7-installer
    

花一點時間之後即可安裝完成!

測試程式下載

在Ubuntu 12.04 LTS中使用OpenJDK及Oracle Java讀取健保卡 - 2


接續前一篇文章,本文是第二部份,主要在說明使用openjdk及icedtea來執行健保卡程式的讀取。



首先安裝openjdk及icedtea(在此以openjdk7版為例)。

sudo apt-get install openjdk-7* icedtea-7*

接下來即可測試範例程式

在Ubuntu 12.04 LTS中使用OpenJDK及Oracle Java讀取健保卡 - 1

先前協助基隆市撰寫之健保卡認證Applet,其實在W$系統中運作都很正常,某天,突然收到基隆市某校的主任來信說,他們全校都用Ubuntu,會發生找不到讀卡機的狀況,於是就研究一下該如何解決。
花了很久的時間終於發現有兩個方法可以正確的讀取到健保卡,在此和大家分享。

本系列文章共分3段,此是第一部份-讓讀卡機可以正確的在Ubuntu中運作。在第二部份將會介紹使用OpenJDK來讀取健保卡;而第三部份則是使用Oracle JDK來讀取。