【问题标题】:Exp files and applet dependencies in Java CardJava Card中的exp文件和applet依赖
【发布时间】:2017-05-26 17:58:43
【问题描述】:

我在两个不同的项目 Java Card 2.2.2 中编写了一个小程序 Applet1 在一个包 firstApplet 中,另一个小程序 Applet2 在一个包 secondApplet 中。

我想在第二个小程序中使用第一个小程序的一些功能。

所以在Applet2 中,将第一个项目添加到第二个项目的Java Build Path 之后,它看起来像:

package secondApplet;

import javacard.framework.APDU;
...

import firstApplet.Applet1;

public class Applet2 extends Applet {
 ...
}

首先,使用 Java Card 工具converter,我使用以下命令得到一个.exp 文件:

converter -out EXP -exportpath ..\api_export_files -applet AID Applet1 -classdir ..\..\ ... \Applet1\bin firstApplet PID 1.1

其中AID 是小程序ID,PID 是程序包ID。它给了我一个firstApplet.exp 没有错误。

这个命令的输出是:

parsing C:\ ... \bin\firstApplet\Applet1.class
converting firstApplet.Applet1
writing C:\ ... \bin\firstApplet\javacard\firstApplet.exp

但是,当我尝试获取 Applet2 的 CAP 文件时,它返回错误:

error : secondApplet.Applet2: class firstApplet.Applet1 not found in export file firstApplet.exp.

我真的不明白出了什么问题,我认为 .exp 生成得很好,我错过了什么吗?

【问题讨论】:

  • 你在构建Applet2的时候把生成的exp文件放到正确的地方了吗?
  • 是的,我认为它在正确的位置,因为我试图移动它,然后收到错误消息:firstApplet.exp not found
  • 您是否将-exportpath 设置为C:\...\bin?能否提供Applet2编译的命令?
  • 好吧,我不是,但现在我又犯了一个错误。所以,我获取 Applet2 的 CAP 文件的命令行是:converter -out CAP -exportpath ..\api_export_files C:\...\bin -applet 0x01:0x02:0x03:0x04:0x05:0x06:0x07:0x08:0x09:0x00:0x00 Applet2 -classdir ..\..\ ... \Applet2\bin secondApplet 0x01:0x02:0x03:0x04:0x05:0x06:0x07:0x08:0x09 1.1,我得到 error: invalid AID -applet 但我检查了,它是正确的 AID(与 Applet1 不同)。我怀疑这是因为我在-exportpathoptions 中添加了两个参数,但如果我调用它两次,它会删除之前的调用... Ty 提前
  • 用分号分隔路径:-exportpath ..\api_export_files;C:\...\bin

标签: java compilation applet dependencies javacard


【解决方案1】:

晚了 1.5 年,但仍然很有趣的问题。这是我的答案:这是设计使然。 如果您的 CAP 文件中有小程序,您的导出将不包含公共类(Javacard 虚拟机规范,版本 3.0.1,第 6.12 节“导出组件”-最后一段。)所以为了做你想做的事,您将需要从 Applet1 中创建一个库包。理论上,您可以通过在为 Applet1 创建 CAP 文件时指定小程序来做到这一点。这样做会有两个问题:首先,转换器不允许您创建此类“格式错误”的文件,其次您将无法实例化 Applet1。

如果您只是希望 Applet2 与 Applet1 一样,顶部有樱桃,最好的方法是将 Applet1 的机制放入一个抽象类 - 并在不同的包中 - 让 Applet1 和 Applet2 都扩展这个抽象类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2011-08-17
    • 2011-11-24
    相关资源
    最近更新 更多