編輯2:發現錯誤。我試圖在構造函數中初始化Shareable對象。那時客戶的註冊方法還沒有被調用,所以JCRE沒有它的AID。雖然我的服務器的getShareableInterfaceObject(AID客戶端,字節參數)方法不要求客戶端的AID爲!= null,但JCRE可能會這樣做,因爲它會爲我的客戶端調用此方法。我現在初始化我的Shareable對象,當我處理我的第一個APDU,它現在可以工作。Javacard可共享接口:lookupAID返回AID,但getAppletShareableInterface返回null
順便說一句,謝謝你owlstead幫助格式化我的文章。絕對讓它更容易閱讀!
我是新來的Java Card開發,我不能讓我的Shareable
接口才能正常工作。
我有一個接口類聲明我的客戶端小程序想要使用的函數。我的服務器applet實現了這個類。我的客戶端小應用程序查找AID並嘗試通過調用getAppletShareableInterface()
來獲取接口。但是這總是會返回null
。
我的服務器小應用程序的getShareableInterface()
只包含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返回正確的援助,但getAppletShareableInterfaceObject返回null彷彿服務器小程序並不存在。
如果您展示了一些代碼以及關於運行時環境的一些信息,我們將會得到幫助。 –
很高興你解決了這個問題,我使用Java Card做了很多工作,但是'Shareable'界面少了一點。 –
你可以將它作爲答案發布並接受它嗎?這樣,問題就不會公開。 –