0

Websphere 8.0.0.4 と JSF 1.2 (Sun プロバイダー/IBM プロバイダー) との競合はありますか?

アプリケーションへのアクセス中に以下の問題が発生します。

原因: java.lang.ClassNotFoundException: com.sun.faces.application.ApplicationAssociate at java.net.URLClassLoader.findClass(URLClassLoader.java:434) at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java: 204) で java.lang.ClassLoader.loadClassHelper(ClassLoader.java:665) で java.lang.ClassLoader.loadClass(ClassLoader.java:644) で com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:119) ) com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62) で java.lang.ClassLoader.loadClass(ClassLoader.java:627) com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader. java:58) で com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:566) で java.lang.ClassLoader で。com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:566) の loadClass(ClassLoader.java:627) java.lang.ClassLoader.loadClass(ClassLoader.java:627) の com.ibm.ws.classloader .CompoundClassLoader.loadClass(CompoundClassLoader.java:566) で java.lang.ClassLoader.loadClass(ClassLoader.java:627)

私のPOMエントリは次のとおりです。

     <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>1.2</version>
    </dependency>

     <dependency>
        <groupId>com.ibm.faces</groupId>
        <artifactId>jsf-ibm</artifactId>
        <version>1.0</version>
    </dependency>

     <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>jsf-impl-messages</artifactId>
        <version>1.0</version>
    </dependency>  
4

1 に答える 1

1

私は答えを見つけました。

  1. 基本的に、websphere 8 は Java EE 6 に基づいており、Java EE 6 は JSF 2.0 に基づいています (これを参照してください: http://www.oracle.com/technetwork/java/javaee/tech/index.html )。ここで、websphere 7 は Java EE 5 に基づいており、Java EE 5 は JSF 1.2 に基づいています (これを参照してください: http://www.oracle.com/technetwork/java/javaee/tech/javaee5-jsp-135162.html )

  2. Websphere 8 には、J2ee.jar (Java EE 6) と、JSF 2.0 実装を持つ com.ibm.ws.jsf.jar があります。

最善の選択肢は、jsf 1.2 で websphere 8.0 を使用しないことです。ただし、jsf 1.2 を使用して websphere 8.0 に切り替える必要がある場合は、次のいずれかのオプションを使用する必要があります。

jsf 1.2 コードで jsf 2.0 jar を使用する

または

クラスローディング階層 ( Parent last ) を変更し、アプリケーションに JSF 1.2 固有の jar を追加する必要があります。これにより、webspeher 共有ライブラリからではなく、アプリケーションから JSF 1.2 jar を参照できるようになります。

于 2013-01-29T13:45:02.607 に答える