当前位置: 首页 > 知识库问答 >
问题:

Java Card Converter:类不属于包\

葛浩阔
2023-03-14

我正在创建一个非常简单的Java Card Applet(版本2.2.2),但是我是Java Card的新手,我不知道如何将。class文件转换为。cap文件。我正在使用converter.bat文件。

我已经设法用Eclipse将单个。java文件编译为。class...

我试着将我的小程序移动到默认的包,并将包从代码的顶部移除...

.\converter.bat -applet 0x01:0x02:0x03:0x04:0x05:0x06:0x07:0x08:0x09:0x00:0x00 Token -classdir .\Token\ -exportpath %JC_HOME%\api_export_files \ 0x01:0x02:0x03:0x04:0x05:0x06:0x07:0x08:0x09:0x00 1.0

它向我抛出一条错误消息:错误:类标记不属于包\.

我的java小程序:

import javacard.framework.*;

public class Token extends Applet {
    /* constants declaration */
    // code of CLA byte in the command APDU header
    final static byte Amblar_CLA =(byte)0xb0;

    // codes of INS byte in the command APDU header
    final static byte SET_TOKEN = (byte) 0x30;
    final static byte GET_TOKEN = (byte) 0x40;

    private short token;

    /**
     * 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 Token(bArray, bOffset, bLength);
    }

    /**
     * Only this class's install method should create the applet object.
     */
    private Token(byte[] bArray, short bOffset, byte bLength) {
        token = 0x00;
        register();
    }

    public boolean select() {
        return true;
    }

    public void process(APDU apdu) {
         byte[] buffer = apdu.getBuffer();

        if ((buffer[ISO7816.OFFSET_CLA] == 0) && (buffer[ISO7816.OFFSET_INS] == (byte)(0xa4)))
            return;

        if (buffer[ISO7816.OFFSET_CLA] != Amblar_CLA)
          ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);

        switch (buffer[ISO7816.OFFSET_INS]) {
            case SET_TOKEN: 
                setToken(apdu);
                break;
            case GET_TOKEN: 
                getToken(apdu);
                break;
            default: ISOException.throwIt (ISO7816.SW_INS_NOT_SUPPORTED);
        }
    }

    private void setToken(APDU apdu) {
        byte[] buffer = apdu.getBuffer();

        byte byteRead = (byte)(apdu.setIncomingAndReceive());

        if (byteRead != 1)
            ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);

        byte newToken = buffer[ISO7816.OFFSET_CDATA];

        token = (short)newToken;
    }

    private void getToken(APDU apdu) {
        byte[] buffer = apdu.getBuffer();

        short le = apdu.setOutgoing();

        if ( le < 2 ) ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);

        apdu.setOutgoingLength((byte)2);
        buffer[0] = (byte)(token >> 8);
        buffer[1] = (byte)(token & 0xff);
        apdu.sendBytes((short)0, (short)2);
    }
}

共有1个答案

索令
2023-03-14

您只需在Java源文件中放置一个包声明(就像您一直应该做的那样,不要忽略默认的包警告)。

例如:

package com.myname.javacard.test;

会很好的。

 类似资料:
  • (我是mongo新手) 如何查询不属于ObjectId类型的_id? 我mongorestore了一个mongodump,但无法根据id字段得到任何结果。过了一会儿,我注意到集合中的记录不符合ObjectID类型。 _id:7409a2ab-322e-40f3-b991-c3ebeda78f61 如果我将id更改为,那么我的查询将正常工作,因为它与ObjectID类型匹配。 我只是不断得到<cod

  • 我试图通过JNI从C++调用Kotlin函数。 我用这行代码调用FindClass(): m_env是指向JNI环境的有效指针(例如,我可以成功地找到标准Java库类)。上面的代码行失败 java.lang.ClassNotFoundException:在路径上找不到类“DE/CompanyName/PackageName/MyKotLinClass”:DexPathList[[directory

  • 我是个新手。目前我正在学习6个特征。当我试图处理错误时,会出现如下问题:, 未找到模块:错误:无法解析“D:\WORKSPACE\Angular5\binding\src\app”中的“rxjs/add/observable/throw” 找不到模块:错误:无法解决'D:\WORKSPACE\Angular5\绑定\src\app'中的'rxjs/add/操作员/捕获' src/app/emplo

  • 假设我的表如下所示, 因此,我想获取不属于组“a”的ID 最优雅的方式是什么。现在我使用类似的东西,但我的结果并不完全是我所需要的。因为这也得到了ID5和7

  • 我有一个像下面这样的模型: 但是当我尝试通过将其中一个访问者与一个联系人交换来更新一个visitRequest,并尝试在一个CRUD存储库visit request repository . save(visit request)上执行该方法时;我得到了这个异常: Servlet。路径为[]的上下文中servlet[dispatcherServlet]的service()引发了异常[Request

  • 如何使类示例推断类型基于实例值检查: 打字沙盒。