Java 如何在linux中解决NoClassDefFoundError:org/apache/log4j/Logger
这是我的简单程序 首先,log4j位于WEB-INF/lib目录下Java 如何在linux中解决NoClassDefFoundError:org/apache/log4j/Logger,java,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 s
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
在您的调用中,我看到了
-cp$类路径
。在linux环境中,类路径中使用的文件分隔符是:
,因此类路径中只包含当前目录
我认为您需要将其更改为
-cp.:$CLASSPATH
似乎,$CLASSPATH没有包含在-cp参数值中,因为它使用分号作为分隔符。它可能看起来像-cp$CLASSPATH
或类似当我这样做的时候,我得到了所有的java选项。你是按照$java\u HOME/bin/java-Dlogfile=/root/MyAppLogs/dealer/app.log-cp做的吗$CLASSPATH com.util.TestCron
?仍然是相同的例外,请查看我问题中的编辑部分,根据您的评论,我在其中包含了更新的脚本。您不能在CLASSPATH中使用*
。我建议您找到一篇关于设置类路径的介绍性文章,并确保您理解它。