当Thread.currentThread()。getContextClassLoader()返回null时,会发生什么?

时间:2010-09-19 21:24:41

标签: java classloader

从包含/ META-INF中的JAX-WS SPI文本文件的JAR文件开始,然后是它指向的类。把它放到类路径中。将当前线程的contextClassLoader设置为null。

从JDK 1.6中的JAX-WS API调用Service类,然后开始逐步执​​行它。在没有上下文类加载器的情况下,此代码将调用Class的静态方法来查找内容。

它将成功找到SPI文件。但它找不到它所命名的.class。

如果您真的想亲自尝试一下,请抓住Apache CXF 2.2.10,将它放在类路径上,并将上下文类加载器归零。

这不是无意义的受虐狂的练习:事实证明,当Open Office调用Java扩展('UNO')时,它会离开上下文类加载器null。需要一些重要的 proctology 考古学来解决这个问题。这让我想知道,是否有一个JDK错误解释了不一致的结果,或者某些我不理解的指定行为?

1 个答案:

答案 0 :(得分:1)

为此类事件提出了各种各样的错误;例如扫描this query的结果。一般的Sun响应是这些功能不是错误,并且不会被修复;例如http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4155645

底线是getContextClassLoader 可以返回null