最近在使用URLClassloader的加载JAR包中的资源的时候,在系统运行期将JAR包替换成新编译的包(包中数据未变),报错:
Caused by: sun.misc.InvalidJarIndexException: Invalid index
at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:858)
at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:765)
at sun.misc.URLClassPath$JarLoader.findResource(URLClassPath.java:735)
at sun.misc.URLClassPath.findResource(URLClassPath.java:146)
at java.net.URLClassLoader$2.run(URLClassLoader.java:385)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findResource(URLClassLoader.java:382)
at java.lang.ClassLoader.getResource(ClassLoader.java:1002)
at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1192)
原因:此场景在WINDOWS下正常,由于LINUX文件系统有缓存,新的文件替换后,文件句柄发生变化,缓存失效导致了此问题。
以下是xstream解析URLClassloader加载的资源报的错
Caused by: java.util.zip.ZipException: oversubscribed dynamic bit lengths tree
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:147)
at java.io.FilterInputStream.read(FilterInputStream.java:116)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.read1(BufferedReader.java:185)
at java.io.BufferedReader.read(BufferedReader.java:261)
at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:2992)
at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)
at org.xmlpull.mxp1.MXParser.parseProlog(MXParser.java:1410)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1395)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:52)
... 24 more
注意:java.util.zip.ZipException的错误MSG不固定随机产生。
分享到:
相关推荐
at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) ...9 more
《深入理解Java7 JSR-203与类加载器:以ironjacamar-spec-api-1.1.2.Final.zip和path-classloader.zip为例》 在Java开发中,类加载器是至关重要的组成部分,它负责查找并加载类到Java虚拟机中。本文将深入探讨Java7...
at java.net.URLClassLoader.findClass(URLClassLoader.java:434) at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:204) at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:688...
例如,`sun.misc.Launcher$AppClassLoader`继承自`URLClassLoader`,并实现了类加载的逻辑,这使得我们有机会深入了解类加载的生命周期。 在文件列表中,我们可以看到`sun`、`javax`、`com`、`launcher`等目录,...
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown ...
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) 则是因为Java Compile ...
java.lang.NoClassDefFoundError: org/jaxen/JaxenException ... at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 27 more
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) ... 38 ...
"dynamic-load-class-parent.zip"这个压缩包可能包含了一些示例代码或教程,旨在帮助我们理解并实践Java中的动态类加载机制。下面我们将深入探讨这个主题。 1. **类加载器(ClassLoader)**: 类加载器是Java虚拟机...
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 解决办法: ...
- `java.lang.ClassLoader` 和 `java.net.URLClassLoader` - `java.util.ArrayList`、`java.util.LinkedList` - `java.util.HashMap`、`java.util.LinkedHashMap`、`java.util.TreeMap` - `java.util.HashSet`、...
在"**classloader-study.zip**"中,你可能会看到如何创建自定义`ClassLoader`的代码示例,以及如何使用`URLClassLoader`从网络或其他位置加载类。此外,还可能包含关于如何管理类加载的生命周期,避免类加载冲突,...
- 用Java编写,实现为sun.misc.Launcher$ExtClassLoader。 - 继承自ClassLoader,父类加载器为引导类加载器。 - 从java.ext.dirs系统属性指定的目录或JRE的lib/ext子目录加载类库。 - 如果用户将JAR文件放入此...
URLClassLoader是Java提供的一种类加载器,它允许我们通过URL来加载类和资源,从而实现这一目标。本篇文章将深入讲解如何使用URLClassLoader加载C盘下的test.jar文件。 首先,了解类加载器的基本概念。在Java中,类...
在Java环境中,你可以使用`java.lang.ClassLoader`和`java.net.URLClassLoader`来加载这个JAR包,然后通过反射机制调用其中的类和方法。例如,你可以创建`Class`对象来实例化银联接口所需的类,并执行支付相关的操作...
这里提到的“Java反序列化漏洞URLClassLoader利用1”是利用了Java中的`java.net.URLClassLoader`来远程加载并执行恶意代码的一个示例。 `URLClassLoader`是Java中的一个类加载器,它可以从指定的URL列表中加载类。...
Java URLClassLoader 是Java标准库中的一个类加载器,它允许我们动态地从指定的URL位置加载类和资源。这个功能在开发插件系统、热部署或者处理多种版本库的场景中非常有用。从JDK 1.2开始,`java.net.URLClassLoader...
例如,`sun.misc.Launcher$AppClassLoader`是默认的应用类加载器,它是`URLClassLoader`的一个实例。 - `URLClassLoader`的构造函数接受一个URL数组,这些URL就是类和资源的查找路径。 2. **类加载过程**: - 类...
1. java.lang.util.regex.* 常用工具库 1. commons.lang, commons.*... guava-libraries netty 异常 1. 异常类型、正确处理异常、自定义异常 时间处理 1. 时区、时令、Java 中时间 API 编码方式 1. 解决乱码...