Websphere 8.0.0.4与JSF 1.2(Sun提供商/ IBM提供商)之间是否存在冲突?
访问我的应用程序时遇到问题:
引起:java.lang.ClassNotFoundException:com.sun.faces.application.ApplicationAssociate 在java.net.URLClassLoader.findClass(URLClassLoader.java:434) 在com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:204) at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:665) at java.lang.ClassLoader.loadClass(ClassLoader.java:644) 在com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:119) at java.lang.ClassLoader.loadClass(ClassLoader.java:627) 在com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62) 在com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58) 在com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:566) at java.lang.ClassLoader.loadClass(ClassLoader.java:627) 在com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:566) at 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>
答案 0 :(得分: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)
Websphere 8有J2ee.jar(Java EE 6)和com.ibm.ws.jsf.jar,它有JSF 2.0实现。
最好的选择是不使用jsf 1.2的websphere 8.0。但是,如果您仍然需要使用jsf 1.2切换到websphere 8.0,则需要采用以下任一选项:
使用jsf 2.0 jars和jsf 1.2代码
或者
我们需要更改类加载层次结构(Parent last)并在应用程序中添加JSF 1.2特定jar。这将允许从应用程序引用JSF 1.2 jar而不是从web共享库中引用