Java 错误:从cmd运行代码时,包org.apache.log4j不存在
运行Java 错误:从cmd运行代码时,包org.apache.log4j不存在,java,maven,cmd,log4j,Java,Maven,Cmd,Log4j,运行javac Main.java命令时,我得到一个包org.apache.log4j不存在错误 Mainclass public class Main { private static Logger logger = Logger.getLogger(Main.class); public static void main(String[] args) { BasicConfigurator.configure(); logger.info
javac Main.java
命令时,我得到一个包org.apache.log4j不存在
错误
Main
class
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>
我收到的错误消息是:
假设1(错误):源类中没有发布导入→ 必须增加进口
看起来您的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");
}
}
真正的问题(在我修复了帖子中的图像显示后)
您不是使用maven而是使用命令行javac
运行编译。没有maven,就不会自动将依赖项添加到类路径中
如果要从命令行运行
在这种情况下,必须将log4j添加到类路径中。
它将如下所示(从sources目录运行,在默认maven布局中为\src\main\java
:
javac company/Main.java-cp%userprofile%\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar
我假设您的本地Maven repo位于默认的Windows路径%userprofile%\.m2
。如果它位于其他部分(或Linux),您必须更改到log4j-1.2.17.jar
的路径
在这种情况下,类Main.class
将被编译到与Main.class
相同的包中
如果你想用maven编译
只需从存放pom.xml
的目录中运行mvncile
。
请注意,maven会将类编译到target
目录中,即编译后的类将位于类似\target\classes\company\Main.class
的路径中(相对于项目根目录,即pom.xml
所在的位置)。假设1(错误):源类中没有发布导入→ 必须增加进口
看起来您的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");
}
}
真正的问题(在我修复了帖子中的图像显示后)
您不是使用maven而是使用命令行javac
运行编译。没有maven,您不会自动将依赖项添加到类路径中
如果要从命令行运行
在这种情况下,必须将log4j添加到类路径中。
它将如下所示(从sources目录运行,在默认maven布局中为\src\main\java
:
javac company/Main.java-cp%userprofile%\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar
我假设您的本地Maven repo位于默认的Windows路径%userprofile%\.m2
。如果它位于其他部分(或Linux),您必须更改到log4j-1.2.17.jar
的路径
在这种情况下,类Main.class
将被编译到与Main.class
相同的包中
如果你想用maven编译
只需从存放pom.xml
的目录中运行mvncile
。
请注意,maven将把类编译到
target
目录中,即编译后的类将位于类似\target\classes\company\Main.class
的路径中(相对于项目根目录,其中包含pom.xml
).我的类中有导入。好的,对不起,你能把你的项目发布到github吗?@kateswerg我终于明白了你的问题。你不是用maven运行你的项目,而是用cmdjavac
。需要将log4j添加到你的类路径中。我会很快更新答案。我添加了log4j\u HOME C:\Program Files\log4j-1.2.17.jar。压缩到环境变量和相同的目录到路径变量。这没有帮助。@kateswerg我已经更新了答案,请检查并尝试。我的类中有导入。好的,对不起,你能把你的项目发布到github吗?@kateswerg我终于明白了你的问题。你不是用maven运行你的项目,而是用cmdjavac
。需要将log4j添加到类路径中。我将很快更新答案。我将log4j_HOME C:\Program Files\log4j-1.2.17.jar.zip添加到环境变量中,并将同一目录添加到路径变量中。这没有帮助。@kateswerg我已经更新了答案,请检查并重试。