繁体   English   中英

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

[英]how to make sure that the temporary jar file is accessible by the classloader

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

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

  2. 如果对上述问题的回答是“是”,则类加载器将确保立即从字节流中读取所有类文件和资源,以避免以后发生ClassNotFoundError。

  3. 如果答案是Q1。 没有。 然后按照我的方法,我从数据库字节流中创建了一个临时 .jar,并为URLClassloader指定了file:// URL。 URLClassloader是否确保该URL上的临时文件在使用之前不会被破坏,以避免ClassNotFoundException?

也欢迎对上述总体问题有任何其他解决方案。 提前致谢。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM