1

问题

  1. 我们的网络应用程序创建了一个java.net.URL将我们的自定义实现传递URLStreamHandler给构造函数。
  2. 在该 URL 上,我们调用url.openConnection().
  3. java.net.URL代码调用我们的openConnection()处理程序。
  4. 在这一点上,我们得到了NoClassDefFoundError一个处理程序使用的类。

Glassfish 3.1 会发生这种情况,但 Tomcat、WebLogic 和 JBoss 不会发生这种情况。(此外,它曾经在旧版本的 Glassfish 上工作。)

我试过的

我尝试添加一个glassfish-web.xml来告诉 Glassfish 首先从 Web 应用程序加载类(如预期的那样),但这并不能解决问题。

<glassfish-web-app>
    <class-loader delegate="false"/>
</glassfish-web-app>

我该如何解决这个问题,为什么会这样?

4

2 回答 2

2

GF 委托模型总是将 java.* 和 javax.* 委托给类加载器链。

于 2012-11-08T21:51:04.043 回答
0

A NoClassDefFoundError can be caused by the JVM not finding a class, but also to a failure of that happened earlier in a static initializer. The message for the NoClassDefFoundError was Could not initialize class org.orbeon.oxf.resources.handler.HTTPURLConnection, and there was indeed an error that happened earlier in the static initializer for that class. Solving that error fixed the NoClassDefFoundError.

于 2012-11-10T02:08:48.183 回答