【问题标题】:how to make sure that the temporary jar file is accessible by the classloader如何确保类加载器可以访问临时 jar 文件
【发布时间】:2012-04-04 23:34:33
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: java jar classloader


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-09-13
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 2018-04-20
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多