为什么 Eclipse returns 在尝试转换小程序时出错,而 NetBeans 却没有?

Why Eclipse returns an error when trying to convert an applet, while NetBeans not?

下面,您会看到一个 Java 卡片程序,它充当一个 8 字节随机数生成器:

package randGen;

import javacard.framework.APDU;
import javacard.framework.Applet;
import javacard.framework.ISOException;
import javacard.framework.JCSystem;
import javacard.framework.Util;
import javacard.security.RandomData;

public class RandGen extends Applet {
    byte[] generatedArray;
    RandomData randData =   RandomData.getInstance(RandomData.ALG_SECURE_RANDOM);

    private RandGen() {
        generatedArray = JCSystem.makeTransientByteArray((short)8, JCSystem.CLEAR_ON_DESELECT);
    }

    public static void install(byte bArray[], short bOffset, byte bLength)
            throws ISOException {
        new RandGen().register();
    }

    public void process(APDU arg0) throws ISOException {
        byte[] byffer = arg0.getBuffer();
        byte[] generatedRandom = MyGenerator(arg0);
        Util.arrayCopyNonAtomic(generatedRandom, (short) 0, byffer, (short) 0,
                (short) generatedRandom.length);
        arg0.setOutgoingAndSend((short) 0, (short) generatedRandom.length);
    }

    public byte[] MyGenerator(APDU apdu) {
        randData.generateData(generatedArray, (short) 0, (short) 8);
        return generatedArray;
    }

}

此程序在 NetBeans IDE 中成功转换为 .cap 文件,但是当我想用 Eclipse IDE 执行相同的操作时,它returns 以下错误响应我的小程序转换请求:

error: randGen: empty package.

我也添加了一张图片:(如您所见,代码中没有错误,但是项目目录中标有红色时间标记的错误标志)

更新: 我使用了 Java Card 2.2.2 SDKEclipse-JCDE 0.2 插件,用于将我的程序转换为 Eclipse 中的 cap 文件。

有什么想法吗?

有时 Eclipse 无法完全删除 Windows 机器上的 .class 文件或 .cap 文件,这通常是由于某个程序(例如 McAfee 或其他病毒扫描程序)锁定了文件。在这种情况下,并非所有文件都将被删除。在那种情况下,正确的构建器可能不会被触发,你会遇到奇怪的失败。

这类错误当然很难检测到。相反,如果某些事情无法控制地失败,请务必清理您的构建,以便 Eclipse 可以重试。如果您更改了代码,请先刷新,然后清理(并可能再次刷新)。使项目状态与磁盘上的实际状态真正同步的任何东西。