为什么 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 SDK 和 Eclipse-JCDE 0.2 插件,用于将我的程序转换为 Eclipse 中的 cap 文件。
有什么想法吗?
有时 Eclipse 无法完全删除 Windows 机器上的 .class 文件或 .cap 文件,这通常是由于某个程序(例如 McAfee 或其他病毒扫描程序)锁定了文件。在这种情况下,并非所有文件都将被删除。在那种情况下,正确的构建器可能不会被触发,你会遇到奇怪的失败。
这类错误当然很难检测到。相反,如果某些事情无法控制地失败,请务必清理您的构建,以便 Eclipse 可以重试。如果您更改了代码,请先刷新,然后清理(并可能再次刷新)。使项目状态与磁盘上的实际状态真正同步的任何东西。
下面,您会看到一个 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 SDK 和 Eclipse-JCDE 0.2 插件,用于将我的程序转换为 Eclipse 中的 cap 文件。
有什么想法吗?
有时 Eclipse 无法完全删除 Windows 机器上的 .class 文件或 .cap 文件,这通常是由于某个程序(例如 McAfee 或其他病毒扫描程序)锁定了文件。在这种情况下,并非所有文件都将被删除。在那种情况下,正确的构建器可能不会被触发,你会遇到奇怪的失败。
这类错误当然很难检测到。相反,如果某些事情无法控制地失败,请务必清理您的构建,以便 Eclipse 可以重试。如果您更改了代码,请先刷新,然后清理(并可能再次刷新)。使项目状态与磁盘上的实际状态真正同步的任何东西。