Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 小程序安装过程中出现错误6985和6988_Java_Javacard - Fatal编程技术网

Java 小程序安装过程中出现错误6985和6988

Java 小程序安装过程中出现错误6985和6988,java,javacard,Java,Javacard,我为我的java卡编写了一个非常简单的程序,如下所示: package myFirstApplet; import javacard.framework.APDU; import javacard.framework.Applet; import javacard.framework.ISOException; public class ECHO extends Applet { private ECHO() { } public st

我为我的java卡编写了一个非常简单的程序,如下所示:

package myFirstApplet;

import javacard.framework.APDU;
import javacard.framework.Applet;
import javacard.framework.ISOException;

public class ECHO extends Applet 
{

    private ECHO() 
        {
        }

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

    public void process(APDU arg0) throws ISOException 
        {
        byte[] received=arg0.getBuffer();
        ++received[(short)(received.length+1)];
        arg0.setOutgoingAndSend((short)0, (short)received.length); 
        }

}
其写入方式为接收APDU命令,逐个添加并再次发送给持卡人

成功将其转换为.cap文件后,当我想使用GP工具安装它时,我收到6985错误:

以及6985和6988,当我尝试使用JCManager安装它时:

在第二行中,我添加了这个数组的最后一个成员:

    ++received[(short)(received.length+1)];
现在我将APDU缓冲区发送给用户:

    arg0.setOutgoingAndSend((short)0, (short)received.length); 

对吧??如果是这样,我没有更改接收APDU命令!我刚刚收到它,复制了一份,更改了副本,然后再次发送原始缓冲区!对吗?

加载软件的自述文件提供了获取支持的简单指南:

此外,您的软件包名称表明您没有使用最新版本。在发送任何日志之前,请使用最新版本


我怀疑小程序不适合您的卡,因为您正在使用卡上没有的功能包。在这种情况下,我怀疑您的cap针对的是较新的javacard版本。

1-我10小时前下载了gp.exe!!2-我的智能卡是JavaCard 3.0.1!否决投票人,请解释为什么?请一次问一个问题没有否决投票。请注意,您的APDU处理不存在,并且您的代码错误且接收良好。长度+1显然不适合APDU缓冲区,您需要接收数据才能进行更改it@MaartenBodewes好的,谢谢。请注意,您的APDU处理是不存在的,我可以请您解释一下吗?你说不存在是什么意思?如果可能的话,回答这个问题,让我检查一下。你需要接收数据才能更改它。不是吗?那么这条线是干什么的?接收的字节[]=arg0.getBuffer;1如果您希望命令中包含数据,请调用setIncomingAndReceive。2.length仍然是一个indexoutofbounds,我不知道为什么在安装时捕获+1,而另一个没有。3编译器和转换器不是完整的fletch静态代码分析器,您仍然能够生成运行时异常即使它们确实包含静态代码分析,这也是正确的,但此错误可能已被捕获。
    byte[] received=arg0.getBuffer();
    ++received[(short)(received.length+1)];
    arg0.setOutgoingAndSend((short)0, (short)received.length);