【问题标题】:java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener Error on Deployment in NetBeans 7.0.1java.lang.ClassNotFoundException:在 NetBeans 7.0.1 中部署时出现 com.sun.faces.config.ConfigureListener 错误
【发布时间】:2012-09-18 14:53:11
【问题描述】:

我在 NetBeans 7.0.1 的 struts2 框架中有一个 Web 应用程序。它工作正常。但是突然Tomcat已经开始给出以下错误:

SEVERE: Error configuring application listener of class com.sun.faces.config.ConfigureListener
java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4660)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

有什么帮助吗?

【问题讨论】:

标签: java tomcat


【解决方案1】:

遇到了同样的问题。您可能使用 NetBeans 以默认的“编译”范围自动添加此依赖项,它破坏了 tomcat:

   <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
    </dependency>

使用这里提供的范围https://stackoverflow.com/a/10156854/1051834 如果它没有帮助安装一个新的 tomcat 并再次重新部署您的项目。

【讨论】:

  • 谢谢,但为什么会这样?
  • @KorayTugay: javaee-api jar 需要 jsf jar,所以如果你在项目中添加 javaee-api jar,你还必须添加 jsf jar。因此,在运行时添加 jsf jar 或删除 javaee-api jar(给出提供的范围)将解决这个问题。 maven 中的“提供”范围意味着您需要 JAR 进行编译,但在运行时环境已经提供了一个 JAR,因此您不需要将它与您的应用程序打包,因此它不会被复制到 lib 文件夹中。
【解决方案2】:
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.6</version>

对我有用,您可以在发布新版本时更改版本。

【讨论】:

    【解决方案3】:

    您的应用程序中缺少 jsf-implementation 库(它应该在应用程序的 WEB-INF\lib\ 目录中)。 如果是从 Netbeans 启动应用程序,这个库(jsf-impl.jar?)是在 Netbeans 项目的 classpath 中配置的,所以没有错误。

    【讨论】:

    • 但我没有在我的应用程序中使用任何 JSF
    • 您在 Tomcat 上部署了其他应用程序吗?
    • 它现在工作正常。我用 Tomcat 卸载了 NetBeans 并创建了一个新项目。但我仍然不知道错误背后的确切原因是什么
    • 我尝试使用 struts2+hibernate 创建一个全新的 maven 项目,但仍然出现此错误。
    猜你喜欢
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多