2012-09-12 33 views
2

編輯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彷彿服務器小程序並不存在。

+0

如果您展示了一些代碼以及關於運行時環境的一些信息,我們將會得到幫助。 –

+0

很高興你解決了這個問題,我使用Java Card做了很多工作,但是'Shareable'界面少了一點。 –

+0

你可以將它作爲答案發布並接受它嗎?這樣,問題就不會公開。 –

回答

3

發現錯誤。我試圖在構造函數中初始化Shareable對象。那時客戶的註冊方法還沒有被調用,所以JCRE沒有它的AID。雖然我的服務器的getShareableInterfaceObject(AID客戶端,字節參數)方法不要求客戶端的AID爲!= null,但JCRE可能會這樣做,因爲它會爲我的客戶端調用此方法。我現在初始化我的Shareable對象,當我處理我的第一個APDU,它現在可以工作。