当前位置:文档之家› Eclipse的安装及配置

Eclipse的安装及配置

4.4.3 Eclipse的安装及配置Eclipse是一款非常优秀的开源IDE,非常适合于 Java 开发,由于支持插件技术,受到了越来越多的开发者的欢迎。

本书选用目前流行、稳定的Eclipse 3.2版本进行 Java 智能卡Applet的开发。

Eclipse 工具是通过调用JCDK中 JCWDE 工具来模拟运行 Java 智能卡 Applet 的。

JCWDE 实际是一个 Java 应用,其主类为:com.sun.javacard.jcwde.Main。

在整个调试运行过程中, Eclipse 模拟的是 Java 智能卡卡片。

用户通过使用 JCDK 中的 APDUTool来模拟读写器,二者间的通信是通过默认的 9025 socket 端口来进行的。

因此,在 Eclipse 中调试和运行 Java 智能卡Applet 前,必须按照4.4.1 和 4.4.2 中的描述完成JDK 和JCDK 的安装和配置。

首先,从Eclipse的官方网站下载 Windows平台的Eclipse 3.2版本,下载到本地后文件名为:eclipse-SDK-3.2-win32.zip。

然后解压到指定的目录,此处假定解压到C:\eclipse下。

安装后的目录结构如下图4.18所示。

图4.18 Eclipse 的安装目录下面详细介绍了在Eclipse下开发Java 智能卡的环境参数配置步骤,同时建立了一个非常有代表性的HelloWorld 小应用程序用于测试。

1. 首先选择【File】->【new】->【Project】->【Java Project】,打开新建Java工程向导。

如图4.19所示:图4.19 新建工程向导2. 点击【Next】,在Project Name框中输入工程名称,此处我们假定为:HelloWorld。

然后点击【Finish】按钮完成新建工程的工作。

如图4.20所示:图4.20 新建工程界面3. 在新建的HelloWorld工程的右键快捷菜单上,选择【Properties】->【Java Build Path】->【Libraries】,按【Add External JARs】,选择本地安装的Sun官方提供的Java 智能卡 Kit 2.2里lib文件夹下的api.jar文件。

然后点击【Finish】按钮关闭Java配置画面。

如图4.21 所示:图4.21 工程设置界面4. 在新建的HelloWorld工程的右键快捷菜单上,选择【New】->【Class】,打开如下的画面。

在此画面中,需要在Package栏中输入包的名称,此处假定为:com.cad.www。

在Name栏中输入类的名称,此处假定为:HelloWorld。

在SuperClass栏中输入需要继承的基类的名称,此处需要写上:javacard.framework.Applet。

然后选择【Finish】按钮完成在工程中添加新类的工作。

如图4.22所示:图4.22 新建类界面1.编辑HelloWorld.Java类文件,编写以下测试代码。

(关于Applet开发请参考后续章节)package com.cad.www;import javacard.framework.*;public class HelloWorld extends Applet{private byte[] echoBytes;private static final short LENGTH_ECHO_BYTES = 256;/***Only this class's install method should create the applet object.*/protected HelloWorld(){echoBytes = new byte[LENGTH_ECHO_BYTES];register();}/***Installs this applet.*@param bArray the array containing installation parameters*@param bOffset the starting offset in bArray*@param bLength the length in bytes of the parameter data in bArray*/public static void install(byte[] bArray,short bOffset,byte bLength){new HelloWorld();}/***Processes an incoming APDU.*@see APDU*@param apdu the incoming APDU*@exception ISOException with the response bytes per ISO7816-4*/public void process(APDU apdu){byte buffer[] = apdu.getBuffer();short bytesRead = apdu.setIncomingAndReceive();short echoOffset = (short)0;while ( bytesRead > 0 ) {Util.arrayCopyNonAtomic(buffer, ISO7816.OFFSET_CDATA,echoBytes, echoOffset, bytesRead);echoOffset += bytesRead;bytesRead = apdu.receiveBytes(ISO7816.OFFSET_CDATA);}apdu.setOutgoing();apdu.setOutgoingLength( (short) (echoOffset + 5) );// echo headerapdu.sendBytes( (short)0, (short) 5);// echo dataapdu.sendBytesLong( echoBytes, (short) 0, echoOffset );}}2.在你的工作空间目录下的HelloWorld工程目录下,建立jcwde.app文件。

该文件是用于设定installer与所执行的Applet的AID。

具体内容如下://applet AIDcom.sun.javacard.installer.InstallerApplet0xa0:0x0:0x0:0x0:0x62:0x3:0x1:0x8:0x1com.cad.www.HelloWorld0x11:0x22:0x33:0x44:0x55:0x66:0x017. 选择【Run】->【Run】->【Java Application】->【Main】,在Project中输入或者通过右侧的【Browse】按钮选择HelloWorld工程。

在Main class栏中输入:com.sun.javacard.jcwde.Main。

如图4.23所示:图4.23 设置运行配置主类8. 选择【Run】->【Run】->【Arguments】在Program arguments栏中输入:jcwde.app。

jcwde.app就是刚才在此工程目录下建立的文件,内含了installer与所执行的Applet的AID。

如图4.24所示:图4.24 设置程序参数9. 选择【Run】->【Run】->【Classpath】,进行如下设置。

如图4.25 所示:(1) 点击【Add External JARs】选择Java 智能卡 Kit 2.2里lib目录,将所有的Jar 文件加入。

请注意共有9个文档,并且必须保证按照图4.25所示的顺序进行排序。

(2) 点击【Add Projects】选择自己所建的HelloWorld工程。

图4.25 设置 classpath10. 在你的工作空间目录下的HelloWorld工程目录下,建立testapp.scr文件。

scr 文件是C_APDU命令(以16进制表示)命令集文件,可以通过apdutool 工具发送给JCWDE 模拟环境。

具体说来,scr 文件的内容可以分为以下五个部分:1. 上电命令:powerup2. 创建 applet命令格式为:0x80 0xB8 0x00 0x00 Lc xx…xx 0x7F;其中数据域为: AID 的长度 + applet 的AID在本示例中 AID 为 0x11 0x22 0x33 0x44 0x55 0x66 0x01。

3.选择 applet命令格式为:0x00 0xA4 0x04 0x00 Lc xx…xx 0x7F;其中数据域为:applet 的AID在本示例中 AID 为 0x11 0x22 0x33 0x44 0x55 0x66 0x01。

4. 用于测试的apdu命令集(用户可根据Applet所需要执行的apdu命令集,由用户自行定义并加入)5. 下电命令:powerdown此处建立如下的测试脚本文件://上电命令powerup;// 创建applet0x80 0xB8 0x00 0x00 0x08 0x07 0x11 0x22 0x33 0x44 0x55 0x66 0x01 0x7F;// 选择applet0x00 0xa4 0x04 0x00 0x07 0x11 0x22 0x33 0x44 0x55 0x66 0x01 0x7f;// 用户APDU命令10x80 0x50 0x00 0x00 0x0B 0x01 0x00 0x00 0x00 0x02 0x01 0x02 0x03 0x04 0x05 0x06 0x7F;//用户APDU命令20x80 0x52 0x00 0x00 0x0B 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0xa0 0x83 0xd0 0x43 0x7F;//用户APDU命令30x80 0x50 0x01 0x00 0x0B 0x03 0x00 0x00 0x00 0x05 0x01 0x02 0x03 0x04 0x05 0x06 0x7F;//用户APDU命令40x80 0x54 0x00 0x00 0x0F 0x01 0x02 0x03 0x04 0x04 0x03 0x02 0x01 0x03 0x02 0x01 0x01 0x02 0x03 0x04 0x7F;//下电命令powerdown;在以上的用户APDU命令1中,我们作下简单说明:0x80 – CLA:命令报文的类别字节0x50 – INS:命令报文的指令字节0x00 – P1:参数10x00 – P2:参数20x0B – Lc:数据域字节数0x01 0x00 0x00 0x00 0x02 0x01 0x02 0x03 0x04 0x05 0x06 –命令报文的数据域0x7F – Le:响应数据的最大期望长度11. 点击【Run】开始进行模拟,您将会看到Console视窗中,jcwde(Java 智能卡模拟程序)正在执行。

相关主题