Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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 &引用;NegativeArraySizeException";-自定义类加载器_Java_Class_Memory_Loader_Encryption - Fatal编程技术网

Java &引用;NegativeArraySizeException";-自定义类加载器

Java &引用;NegativeArraySizeException";-自定义类加载器,java,class,memory,loader,encryption,Java,Class,Memory,Loader,Encryption,我有一个类加载器正在工作,尽管在将它调整到我的新应用程序后,我现在遇到了一个错误。我相信这是因为我正在把一个整数转换成一个长整数 private byte[] loadClassData(String name) { try { JarInputStream jis = new JarInputStream(new ByteArrayInputStream(dec)); JarEntry entry = null; String entry

我有一个类加载器正在工作,尽管在将它调整到我的新应用程序后,我现在遇到了一个错误。我相信这是因为我正在把一个整数转换成一个长整数

private byte[] loadClassData(String name) {
    try {
        JarInputStream jis = new JarInputStream(new ByteArrayInputStream(dec));
        JarEntry entry = null;
        String entryName = null;
        while((entry = jis.getNextJarEntry()) != null)
        {
            entryName = entry.getName();
            if(entryName.equalsIgnoreCase(name))
            {
                try{
                    classBytes = new byte[(int)entry.getSize()];
                    jis.read(classBytes, 0, classBytes.length);
                    return classBytes;
                }catch(Exception ex){
                    ex.printStackTrace();
                    return null;
                }
            }
        }
        return classBytes;
    } catch (IOException e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
    } catch (Exception ex) {
        ex.printStackTrace();
        System.out.println(ex.getMessage());
    }
    return null;
}
无论如何,这是它的基础。“new byte[(int)entry.getSize()];”部分出错

“java.lang.NegativeArraySizeException”

谢谢。

是的,因为您可以返回-1。即使它没有返回-1,也不应该假设对
read
的单个调用将读取所有数据。您应该在循环中读取,直到输入流返回-1

我建议您为此使用from。

是的,因为可以返回-1。即使它没有返回-1,也不应该假设对
read
的单个调用将读取所有数据。您应该在循环中读取,直到输入流返回-1

我建议您使用from