0

Spring MVC で開発された 2 つのアプリケーションがあります。1 つ目は、VDM がデプロイされ、ローカルとライブの weblogic 12c サーバーの両方で正常に起動することです。しかし、もう 1 つ、つまり VPORTAL はデプロイされていますが、ライブ サーバーで開始されていません。サービスの開始中に、次のエラーが発生します。

java.lang.NoSuchMethodError: org/slf4j/spi/LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V

興味深いことに、ローカル サーバーで完全に動作しています。

両方のアプリケーションでいくつかの jar を一貫させましたが、役に立ちませんでした。注目できることの 1 つは、VDM のクラス ディレクトリにlog4j.xmlというファイルがあったことですが、VPORTAL には何もありませんでした。変更後にVPORTALに入れましたが、どちらも役に立ちませんでした。助けてください!

4

3 に答える 3

3

これは間違いなく jar バージョンの不一致の問題です。WEB-INF\lib フォルダーに配置した slf4j-api jar のバージョンについては言及していません。WLS 12c のものとは異なるバージョンであると思われます。WLS 12.1.1 には、そのモジュール ディレクトリにorg.slf4j.api_1.6.1.0.jarが付属しています。そのため、weblogic.xmlに以下のセクションを追加して、org.slf4j.api_1.6.1からではなく、WEB-INF/libのslf4j-api _x.xxjarからクラスをロードするようにweblogicに指示する必要があります WLS インストールの0.jar 。デフォルトでは、org.slf4j.api_1.6.1.0.jarがサーバーのクラスパスにあるため、これが使用されます。

<container-descriptor>
    <prefer-web-inf-classes>false</prefer-web-inf-classes>
    <prefer-application-packages>
        <package-name>org.slf4j.*</package-name>
        <package-name>org.apache.commons.logging.*</package-name>
    </prefer-application-packages>
</container-descriptor>
于 2013-03-01T05:05:16.473 に答える
-1

Lan が言及した構成を 2 つのファイルに分割する必要があります。

最初のものは META-INF/weblogic-application.xml です。

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-application xmlns="http://www.bea.com/ns/weblogic/90">

  <prefer-application-packages>
      <package-name>org.slf4j.*</package-name>
      <package-name>org.apache.commons.logging.*</package-name>
  </prefer-application-packages>

</weblogic-application>

2 つ目は WEB-INF/weblogic.xml です。

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
                                      http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.1/weblogic-web-app.xsd">

  <container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
  </container-descriptor>

</weblogic-web-app>

そうすれば、最初に SLF4J の webapp バンドル バージョン (WEB-INF/lib に配置する必要があります) を WebLogic (私の場合は 12c) にロードさせることができます。しかし、まだ両方のバインディングが利用可能であるようです。ドイツ語のソース: http://www.torsten-horn.de/techdocs/jee-oracleweblogic.htm#Kompatibilitätsprobleme

于 2013-04-18T07:07:17.363 に答える