-1

以前に Tomcat で Web アプリケーションを開発したことがあり、tomcat/libディレクトリにいくつかの jar ファイルがありました。今、weblogic サーバーでアプリケーションを実行しようとしているので、weblogic 10.3.6 をインストールし、weblogic ドメインを作成し、アプリケーションをデプロイしました。以前に配置したjarファイルをtomcat/liblibディレクトリの下にコピーしました。

Middleware/user_projects/domains/my_domain/lib/

libディレクトリはクラスパスにあるはずですが、Webアプリケーションでクラスファイルにアクセスすると、以下のエラーが発生します:

Caused by: java.lang.NoClassDefFoundError: com/sample/TestManager
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
        at weblogic.utils.classloaders.FilteringClassLoader.findClass(FilteringClassLoader.java:101)
        at weblogic.utils.classloaders.FilteringClassLoader.loadClass(FilteringClassLoader.java:86)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
        at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:43)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:171)
4

1 に答える 1

0

説明を求めたかったのですが、私は新しく、stackoverflow では説明を求めることができません。したがって、私は答えとして投稿しています

DOMAIN_HOME/lib に何かを配置する場合、JARS はシステム/サーバー クラスパスに追加されないことに注意してください。作成されるクラスローダーは、システム/サーバー クラスローダーの子です。

そのため、DOMAIN_HOME/lib ディレクトリの JAR に含まれるクラスは、WAR、EAR などのアプリケーションにのみ表示されます。

このことを考慮:

  • war/ear クラスが package1.A の場合
  • system/server クラスパスに package2.B を含む jar ファイルがある場合
  • DOMAIN_HOME/lib に package3.C を含む jar ファイルがある場合

また、参照する場合:
a) package1.A からの package2.B
b) package2.B からの package3.C


次に、「a」は合格しますが、「b」は同様のエラーで失敗します。

于 2013-05-03T16:25:21.563 に答える