InvalidJarIndexException

InvalidJarIndexException

我浏览了JAR规范文档,发现使用hashtable文件创建了内存中的INDEX.LST,以加快类文件的查找过程。

如果有人可以回答我的以下问题-


hashtable什么时候构造的?应用程序何时加载或何时请求加载小程序?
由于所有类均已包含在存档中,因此为什么要获取InvalidJarIndexException。索引如何变为无效?例如就我而言,当我在蚂蚁构建中使用InvalidJarIndexExceptionindex=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

10-06 08:36