我浏览了JAR规范文档,发现使用hashtable
文件创建了内存中的INDEX.LST
,以加快类文件的查找过程。
如果有人可以回答我的以下问题-hashtable
什么时候构造的?应用程序何时加载或何时请求加载小程序?
由于所有类均已包含在存档中,因此为什么要获取InvalidJarIndexException
。索引如何变为无效?例如就我而言,当我在蚂蚁构建中使用InvalidJarIndexException
和index=true
时得到indexjars
,但是当不使用indexjars时我看不到任何异常。
如果要坚持使用索引,应该如何解决InvalidJarIndexException
?
Java浏览器插件在下载jar文件中的作用?
最佳答案
我从来没有遇到过这个问题,所以我很害怕我不会帮助您,但是我会尽力减轻一切。
它是在类加载器加载时构造的:类加载器本身会查找index.list
文件,并在可用时使用它。
如果index.list
文件已损坏,则可以得到此异常,因为如果类加载器找到了索引文件,它将不再在类路径中查找以加载类:它将仅使用索引。在这里,似乎甚至无法加载它,因此它抛出InvalidJarIndexException
尝试使用index.list
选项使用jar
工具手动生成-i
。如果可行,那就是一个蚂蚁问题:比较生成的文件以进行调查。如果仍然无法使用,请手动检查index.list文件(编码错误?截短的长路径?缺少类?)。
不相关。类加载过程由类加载器完成。 jar文件实际运行的方式无关紧要。
编辑以添加Devil Jin的评论:
蚂蚁的索引较早有错误。
您需要使用1.6版或更高版本
使索引工作。拿一个罐子
建立索引必须设置index = true
以及在其中指定jar文件
indexjars标签。
ant.apache.org/manual/Tasks/jar.html#indexjars