首页 文章

如何确保类加载器可以访问临时jar文件

提问于
浏览
1

我有一个自定义jar类加载器,它使用URLCLassLoader . 我必须从数据库中读取jar内容并加载它们 . 有几个与此相关的问题 .

  • 我可以以某种方式从字节流中加载所有类,而不是先将jar内容从数据库保存到临时文件,并将file:// URL提供给URL类加载器吗?

  • 如果上述问题的答案是肯定的,那么类加载器会确保它一次从字节流中读取所有类文件和资源,以避免以后出现ClassNotFoundError .

  • 如果答案是Q1 . 没有 . 然后通过我的方法,我从数据库字节流创建了一个 temporary .jar,并将文件:// URL提供给URLClassloader . URLClassloader是否确保该URL上的文件是临时的,在被使用之前不会被销毁,以避免ClassNotFoundException?

对上述整体问题的任何其他解决方案也是受欢迎的 . 提前致谢 .

1 回答

  • 1

    您可以使用自己的 URLStreamHandler 构造 URL . 但是, URLClassLoader 的正常实现会将内容保存到临时文件并使用 JarFile API .

    如果创建临时文件,则在UNIX系统上应该能够在打开后删除 . 在Windows上,您需要保留它,直到您完成类加载器 . 从Java SE 7开始,您可以关闭 URLClassLoader .

相关问题