2015-10-09 45 views
3

我有支持一些專有類的java卡,在包「packagename.foo」中說「ClassFoo」。我有這些類和「foo.exp」文件的文檔。但是因爲沒有它,編譯器會發現像uknown導入包和未知類這樣的錯誤,因爲我不知道構建cap文件是否需要別的東西。對?它是什麼?構建cap文件需要使用除* .exp文件之外的專有包嗎?

+1

你是如何編譯的?哪些工具?什麼是錯誤信息? –

+0

@PaulBastian我編譯的東西,像'javac -classpath JAVACARD_SDK_PATH \ bin \ lib \ api.jar SRC_PATH \ test.java'。錯誤很簡單,'package packagename.foo不存在','找不到符號ClassFoo'。 – 10101010

+4

你也應該爲這個擴展包提供一個'.jar',並將它添加到編譯器'-classpath'中(就像你已經使用的'api.jar'一樣)。或者如果你有一堆'.class'文件,你可以添加他們的頂級目錄(就像在標準的java中一樣)。這樣它應該編譯。爲了轉換爲'.cap',你需要'.exp'文件。 – vlp

回答

5

offcard Java Card轉換器使用.exp文件。轉換器將標準Java類轉換爲.cap文件,該文件可以上傳到Java Card實現(通常通過全球平臺)。

要生成這些類文件,首先需要編譯這些類。爲此,通常的Java鏈接器需要鏈接到外部類的接口。所以vlp是正確的,你需要.class文件進行編譯。通常這些類被打包成.jar文件。


現在這些類的實際實現通常只在Java Card運行時上運行。鏈接使用.exp文件執行。因此,實際類的內容在鏈接過程中並不重要,它們在執行過程中也不會被使用(除非當前在jCardSim上運行)。

因此,您經常會得到一個包含所有公共接口,類和方法但不包含任何實現的.jar(除需要的地方外,還有return nullreturn 0除外)。

如果您知道完整的接口(來自Java文檔),甚至可以生成自己的存根並鏈接到該存根。

相關問題