Java Card не просто требует стадии компиляции, она также выполняет связывание, которое обычно выполняется как динамическое связывание в JVM обычного приложения Java. В основном он упорядочивает методы и тому подобное, а затем вызывает правильный serial ID. В конце концов, вы не хотите, чтобы ваш апплет содержал строковые имена ваших полей: он взорвал бы требования к памяти, и динамический поиск классов и полей также не является хорошей идеей для такой ограниченной платформы.
Итак, если вы вызываете внешние библиотеки, вам нужно настроить:
- файл
.jar
, содержащий файлы .class для обычного компилятора;
- файл
.exp
, который содержит экспорт сопоставления нормальных имен и идентификаторов классов и полей, специфичных для преобразованных классов вызываемой библиотеки;
Если его еще нет на карте, вам также может понадобиться файл .cap
для конкретной версии для загрузки. Однако функциональность GP уже должна присутствовать на карте.
Идентификаторы уникальны только для определенного .cap
файла / предварительно загруженного байтового кода. Вот почему вам всегда нужен правильный .exp
файл для загруженного кода. Если добавить другое поле, порядок будет другим, и неправильные поля будут связаны, если компоновщик выполняется вообще. Таким образом, наличие правильного .exp
файла является требованием для правильного преобразования в .cap
для вашего приложения / библиотеки.
Для JCDK я думаю, вам просто нужно правильно настроить -exportpath
, так как GP должен быть включен в JCDK.