[英]error: package org.apache.log4j does not exist while running code from cmd
运行javac Main.java
命令时,出现package org.apache.log4j does not exist
错误。
Main
班
public class Main {
private static Logger logger = Logger.getLogger(Main.class);
public static void main(String[] args) {
BasicConfigurator.configure();
logger.info("in Main class");
}
}
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>example</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
log4j.properties
log4j.rootCategory=debug,console
log4j.logger.com.demo.package=debug,console
log4j.additivity.com.demo.package=false
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.immediateFlush=true
log4j.appender.console.encoding=UTF-8
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%d [%t] %-5p %c - %m%n
我收到的错误消息是:
看起来您在Main
类中缺少import
语句。 尝试这个:
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
public class Main {
private static Logger logger = Logger.getLogger(Main.class);
public static void main(String[] args) {
BasicConfigurator.configure();
logger.info("in Main class");
}
}
您不是通过命令行javac
使用maven buth运行编译的。 没有maven,就不会自动将依赖项添加到类路径中。
在这种情况下,您必须将log4j添加到您的类路径中。 它看起来像这样(从源目录运行,该目录在默认的maven布局中为<project_root>\\src\\main\\java
:
javac company/Main.java -cp %userprofile%\\.m2\\repository\\log4j\\log4j\\1.2.17\\log4j-1.2.17.jar
我假设您的本地Maven存储库位于默认Windows路径%userprofile%\\.m2
。 如果在其他部分(或Linux)中,则必须将路径更改为log4j-1.2.17.jar
。
在这种情况下,类Main.class
将被编译到与Main.class
相同的包中。
只需从pom.xml
所在的目录中运行mvn compile
。 请注意,maven会将类编译到target
目录中,即,已编译的类将位于\\target\\classes\\company\\Main.class
路径中(相对于项目根,即pom.xml
所在的位置)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.