从jar加载类时截断的类文件异常

时间:2017-02-22 21:24:43

标签: java

我正在尝试读取存储在我的jar文件中的类。

当我喜欢这个时

private void registerClasses(Path jar, List<String> classNames) throws IOException {
    JarFile jarFile = new JarFile(jar.toFile());
    Enumeration<JarEntry> e = jarFile.entries();
    while (e.hasMoreElements()) {
        JarEntry je = e.nextElement();
        if (je.isDirectory() || !je.getName().endsWith(".class")) {
            continue;
        }

        String className = je.getName().substring(0, je.getName().length() - 6).replace('/', '.');
        if (classNames.contains(className)) {
            LOGGER.info("Found class in jar [{}].", className);
            InputStream stream = new JarInputStream(jarFile.getInputStream(je));
            byte[] classBytes = IOUtils.toByteArray(stream); // empty array
            Class<?> clz = this.defineClass(className, classBytes, 0, classBytes.length);
            LOGGER.info("Defined class: [{}].", clz.getClass());
        }
    }
}

我得到java.lang.ClassFormatError: Truncated class file,而byteArray似乎是空的。

有什么问题?

0 个答案:

没有答案