编辑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,就好像服务器小程序不存在一样。