Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在linux中解决NoClassDefFoundError:org/apache/log4j/Logger_Java - Fatal编程技术网

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

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

这是我的简单程序

首先,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

在您的调用中,我看到了
-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中使用
*
。我建议您找到一篇关于设置类路径的介绍性文章,并确保您理解它。