从包含/ 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错误解释了不一致的结果,或者某些我不理解的指定行为?
答案 0 :(得分:1)
为此类事件提出了各种各样的错误;例如扫描this query的结果。一般的Sun响应是这些功能不是错误,并且不会被修复;例如http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4155645
底线是getContextClassLoader
可以返回null
。