Eclipse IDE能够生成javacard cap文件,但在命令行中遇到此错误

时间:2019-11-13 08:13:59

标签: java eclipse javacard cap

以下错误迫使我在不使用IDE的情况下,在命令行中研究了cap文件的构建过程。因此,现在,我可以使用java / javac系列命令从命令行构建一个cap文件。但是我有一个小程序,如果通过eclipse IDE构建,它可以成功创建一个cap文件,但是当我尝试在命令行中构建时遇到错误。当我尝试正确设置gradle build设置/环境时,我也遇到相同的错误。这是错误:

[ant:convert] [ INFO: ]     Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
[ant:convert]
[ant:convert]
[ant:convert] warning: You did not supply export file for the previous minor version of the package
[ant:convert] [ INFO: ] conversion completed with 1 errors and 1 warnings.
[ant:convert] error: Class org/dx/tools/TestApplet, specified in -applet option, is abstract.

请注意,这是一个经过工作和测试的小程序,与使用此小程序的其他小程序结合使用。这是建立在Eclipse IDE中的。

我还能够生成.class文件。问题是在将类文件转换为cap文件的过程中。

这是它的样子:

package org.dx.tools;

import org.globalplatform.GPSystem;
import org.globalplatform.SecureChannel;

import javacardx.apdu.ExtendedLength;
import javacard.framework.ISO7816;
import javacard.framework.ISOException;
import javacard.framework.Util;
import javacard.framework.APDU;
import javacard.framework.APDUException;
import javacard.framework.Applet;
import javacard.framework.AppletEvent;    

public abstract class TestApplet extends Applet implements AppletEvent, 
    ExtendedLength {
  ...
}

.cap是其他五个之一。其他不是抽象的,而是从这一继承而来的。由于它是在Eclipse IDE中构建的,因此我实际上可以通过获取IDE产生的输出来构建其他cap文件。首先,我jar类,因为正如我所说的那样,我可以创建这些类并馈入java转换命令以构建其他大写字母,并且我还使用IDE生成的TestApplet.exp

更新日期:2019/11/17 Here是实际的java命令选项,可以从.class.cap构建。我完全从Eclipse IDE转换日志中获取了此信息。

如果答案可以确认这是当前的gradle限制,那么我将接受该答案。如果答案可以显示正确的gradle设置以使其起作用,那么我将接受此答案。谢谢。

2 个答案:

答案 0 :(得分:0)

这很可能是由于链接到库的新旧版本,同时在构建过程中定位到其他Java Card版本。请注意,转换器会创建预链接的代码,因此希望链接到正确的版本。

这与Java SE不同,Java SE可以在运行时链接类,而方法和字段的位置无关紧要,因为它们是在运行时创建的。

答案 1 :(得分:0)

我已通过删除applet {}中的build.gradle块解决了该问题。由于要构建的特定上限是一个抽象类,因此它没有applet辅助。

相关问题