java.lang.NoClassDefFoundError:org / apache / juli / logging / LogFactory

时间:2011-10-31 14:55:11

标签: eclipse tomcat

似乎在启动我的Java应用程序时遇到问题:

  

线程“main”中的异常java.lang.NoClassDefFoundError:   org / apache / juli / logging / LogFactory at   org.apache.catalina.util.LifecycleBase。(LifecycleBase.java:37)   引起:java.lang.ClassNotFoundException:   org.apache.juli.logging.LogFactory 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:423)at   sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)at at   java.lang.ClassLoader.loadClass(ClassLoader.java:356)... 1更多

在这里尝试解决方案: java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory

但我已经看到了tomcat-juli.jar。我也在使用Tomcat 7.可能出错了什么?

7 个答案:

答案 0 :(得分:15)

你的vm没有找到类org/apache/juli/logging/LogFactory检查你使用的tomcat-juli.jar中是否存在此类(解压缩并搜索文件),如果不存在则从apache web下载库如果它存在的其他站点将tomcat-juli.jar放在Tomcat用来加载类的路径(lib目录)中。如果您的Tomcat找不到它,您可以将jar复制到您正在使用的JRE的lib目录中。

答案 1 :(得分:11)

我在Maven中使用tomcat-embed-core::7.0.47时遇到了这个问题。我不确定为什么他们没有将tomcat-util添加为运行时依赖项,因此我将自己的运行时依赖项添加到我自己的项目中。

<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-util</artifactId>
  <version><!-- version from tomcat-embed-core --></version>
  <scope>runtime</scope>
</dependency>

答案 2 :(得分:8)

这件事发生在我身上,因为我使用Tomcat 5.5 catalina.sh文件和Tomcat 7安装。使用Tomcat 7安装附带的catalina.sh修复了问题。

答案 3 :(得分:7)

如果您使用jsvc将tomcat作为tomcat运行(以root身份运行/etc/init.d/tomcat),请修改/etc/init.d/tomcat并将$CATALINA_HOME/bin/tomcat-juli.jar添加到CLASSPATH

答案 4 :(得分:4)

我有同样的问题,帮助我的是:

  1. 右键单击该项目。
  2. 点击“属性
  3. 转到“ Java构建路径
  4. 然后:'图书馆'
  5. 在那里,点击:添加外部广告
  6. 添加:''路径/ To / Tomcat / Bin / tomcat-juli.jar
  7. 完成。

答案 5 :(得分:0)

在我们的例子中,正在使用错误版本的Eclipse 3.5的Sysdeo Tomcat插件。修复:

  • 使用tomcatPluginV33代替tomcatPluginV321(摘录至C:\eclipse\dropins
  • 确保DevloaderTomcat7.jar已放置在tomcat lib文件夹
  • 在窗口中&gt;偏好&gt; Tomcat,将Tomcat版本设置为7.x

这个问题可能是我们环境所特有的;但是,无论如何,为了后人,我会把它记录在这里。

答案 6 :(得分:0)

在Ubuntu 14.04 LTS上

/usr/share# mv /opt/tomcat/apache-tomcat-7.0.56/ tomcat7

为我解决了这个问题。那里有/ opt的符号链接。在opt目录中,那里的../../java链接不会指向/ usr / share / java,因为文件实际上在/ opt