如何在linux中解决NoClassDefFoundError:org / apache / log4j / Logger

时间:2015-11-09 08:47:43

标签: java

这是我的简单程序

首先,log4j存在于WEB-INF / lib目录下。

package com.util;
import org.apache.log4j.Logger;
public class TestCron {
    static Logger logger = Logger.getLogger(TestCron.class);
    public static void main(String[] args) {
        System.out.println("sysout sattement for sample ");
        logger.error("This should appear inside dealer logs");
    }
}

我有一个脚本,我试图在Linux中手动运行。

 #!/bin/bash 
cd /usr/local/tomcat7/webapps/Test/WEB-INF/classes/
JAVA_HOME=/opt/jdk1.7.0_67 
CLASSPATH=/usr/local/tomcat7/webapps/Test/WEB-INF/lib/*: .
$JAVA_HOME/bin/java -Dlogfile=/root/MyAppLogs/dealer/app.log -cp . $CLASSPATH com.util.TestCron

我收到以下错误

  

线程“main”中的异常java.lang.NoClassDefFoundError:org / apache / log4j / Logger

你能告诉我如何解决这个问题吗?

已编辑的部分

#!/bin/bash 
cd /usr/local/tomcat7/webapps/OMS/WEB-INF/classes/
JAVA_HOME=/opt/jdk1.7.0_67 
CLASSPATH=/usr/local/tomcat7/webapps/OMS/WEB-INF/lib/*: .
$JAVA_HOME/bin/java -Dlogfile=/root/OrientAppLogs/dealer/app.log -cp .:$CLASSPATH com.util.TestCron

1 个答案:

答案 0 :(得分:1)

在您的调用中,我看到-cp . $CLASSPATH。类路径中使用的文件分隔符在linux环境中是:,因此只有当前目录包含在类路径中。

我认为您需要将其更改为-cp .:$CLASSPATH