2

编辑2:发现错误。我试图在构造函数中初始化 Shareable 对象。那时还没有调用客户端的 register 方法,所以 JCRE 没有它的 AID。虽然我的服务器的 getShareableInterfaceObject(AID clientaid, byte parameter) 方法不需要客户端的 AID 为 != null ,但 JCRE 可能会这样做,因为它为我的客户端调用此方法。我现在在处理我的第一个 APDU 时初始化我的 Shareable 对象,它现在可以工作了。

顺便说一句,感谢 owlstead 帮助格式化我的帖子。绝对让阅读更容易!


我是 Java Card 开发的新手,我的Shareable界面无法正常工作。

我有一个接口类声明我的客户端小程序想要使用的功能。我的服务器小程序实现了这个类。我的客户端小程序查找 AID 并尝试通过调用getAppletShareableInterface(). 但这总是返回null

我的服务器小程序getShareableInterface()由 just 组成return this;,所以我猜故障出在其他地方。但我不知道在哪里。

我正在使用 JCWDE 并单步执行代码,我看到我的服务器小程序调用了注册,因此客户端小程序应该能够找到它。谁能给我一些指示可能出了什么问题?

编辑:

public interface IF extends Shareable {
    public void method();
}

public class Server extends Applet implements IF {
    public getShareableInterfaceObject {
        return this;
    }
}

public class Client extends Applet {

    private Client() {
        AID ServerAID = JCSystem.lookupAID(byteArrayAID, (short)0, (byte)byteArrayAID.length);
        interface = (IF)JCSystem.getAppletShareableInterfaceObject(ServerAID, (byte)0x00);
    }

    public void process(APDU apdu) {
        interface.method();
    }
}

lookupAID 返回正确的 AID,但 getAppletShareableInterfaceObject 返回 null,就好像服务器小程序不存在一样。

4

1 回答 1

3

发现了错误。我试图在构造函数中初始化 Shareable 对象。那时还没有调用客户端的 register 方法,所以 JCRE 没有它的 AID。虽然我的服务器的 getShareableInterfaceObject(AID clientaid, byte parameter) 方法不需要客户端的 AID 为 != null ,但 JCRE 可能会这样做,因为它为我的客户端调用此方法。我现在在处理我的第一个 APDU 时初始化我的 Shareable 对象,它现在可以工作了。

于 2012-10-04T08:03:26.920 回答