- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所有类似的问题都没有帮助我,所以我正在创建自己的问题:
我正在 Eclipse 中使用 Maven 创建一个 JSF Web 应用程序。为了测试它,我将它作为一个带有 war:war 目标的 Maven 构建运行,这没有错误。但是,当我将 war-file 部署到本地 tomcat 进行测试时,在启动期间收到以下错误消息:
SCHWERWIEGEND: Critical error during deployment:
java.lang.NoClassDefFoundError: javax/faces/context/FacesContextFactory
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.java:618)
at javax.faces.FactoryFinder.getImplementationInstance(FactoryFinder.java:509)
at javax.faces.FactoryFinder.access$400(FactoryFinder.java:139)
at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:993)
at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:343)
at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:303)
at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:219)
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:360)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:225)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:976)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1653)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: javax.faces.context.FacesContextFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 39 more
我有以下依赖......
<dependencies>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.7</version>
</dependency>
</dependencies>
和插件:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
</plugin>
</plugins>
如果您需要更多信息,请告诉我。谢谢!
最佳答案
这个问题表明您在运行时类路径中的其他地方有另一个 JSF API 库,它由 JRE 或 Tomcat 本身而不是 webapp 加载。这样,webapp 提供的 JSF impl 库就找不到正确的 API,从而导致这个异常+跟踪。
换句话说,运行时类路径是脏的。清理它。摆脱随机放置在错误位置的 JAR。其中包括 Tomcat 自己的 /lib
文件夹、JRE 的 /lib
和 /lib/ext
文件夹。另一方面,如果您确保永远不会将 JAR 随机放入 Web 应用程序的运行时类路径所覆盖的文件夹中,那么一切都应该很好。
另一个可能的原因是您在 webapp 本身中传送了多个不同版本的 JSF API 库,但此信息在当前形式的问题中不可见。探索 Maven 构建的 WAR 文件的 /WEB-INF/lib
文件夹必须提供线索。
关于java.lang.NoClassDefFoundError : javax/faces/context/FacesContextFactory 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25405894/
我注意到,当尝试设置在 jetty 上运行的 JSF 2 Web 应用程序时,出现此错误: java.lang.IllegalStateException: Application was not p
我正在尝试使用 eclipse 运行示例 primefaces 3.1 应用程序。当我运行时,我收到以下异常。我已将 jSTL-1.0.2.jar、jsf-impl-2.0.3.jar、jsf-api
我正在从 JBoss 5.1.0.GA 迁移到 JBoss 6.0.0-Final 并在 FacesServler 初始化期间面临以下异常 2011-03-09 18:07:24,574 ERROR
问题是无法找到Factory:javax.faces.context.FacesContextFactory,但位于Websphere 应用程序服务器上。 我有一个 Web 应用程序,它附带了我自己的
所有类似的问题都没有帮助我,所以我正在创建自己的问题: 我正在 Eclipse 中使用 Maven 创建一个 JSF Web 应用程序。为了测试它,我将它作为一个带有 war:war 目标的 Mave
我创建了我的 hello world JSF 项目,但是当我部署到 Tomcat 7 时,出现了这个异常: java.lang.IllegalStateException: Could not fin
java.lang.IllegalStateException: Could not find backup for factory javax.faces.context.FacesContextF
我在使用 Spring Boot 和 JSF 时遇到了一些问题。 servlet 似乎正确启动,但是当我尝试访问资源时,出现以下异常 java.lang.IllegalStateException:
我有一个 java faces 中的应用程序,可以通过以下 web.xml 与 Tomcat 7 一起正常工作。 spfilesharing index.xhtm
我在开发模式下运行 Grails 2.01 和 Tomcat(普通 STS 开发人员下载)。 我尝试运行 jsf 插件,但它在 Grails 2 中无法运行。 因此,为了指导我,我尝试构建自己的本地插
我是一名优秀的程序员,十分优秀!