error: package org.apache.log4j does not exist while running code from cmd
error: package org.apache.log4j does not exist while running code from cmd
虽然 运行 javac Main.java
命令我得到一个 package org.apache.log4j does not exist
错误。
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>
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
我收到的错误消息是:
假设 1(错误):没有导入 post 源 class → 必须添加导入
您的 Main
class 中似乎缺少 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");
}
}
真正的问题(在我修复 post 中的图像显示后)
您运行不是使用 Maven 而是使用 command-line javac
进行编译。如果没有 maven,您就不会将依赖项自动添加到您的 classpath.
如果你想从命令行运行
在这种情况下,您必须将 log4j 添加到 class路径中。
它看起来像这样(运行ning 来自 sources 目录,在默认的 maven 布局中是 <project_root>\src\main\java
:
javac company/Main.java -cp %userprofile%\.m2\repository\log4j\log4j.2.17\log4j-1.2.17.jar
我假设您的本地 Maven 存储库在默认 Windows 路径 %userprofile%\.m2
中。如果它在其他部分(或 Linux),则必须将路径更改为 log4j-1.2.17.jar
.
在这种情况下,class Main.class
将被编译到与 Main.class
相同的包中。
如果要用maven编译
只需 运行 mvn compile
来自您的 pom.xml
所在的目录。
请注意,maven 会将 classes 编译到 target
目录中,即您编译的 class 将位于 \target\classes\company\Main.class
之类的路径中(相对于您的项目根目录,您的 pom.xml
是).
虽然 运行 javac Main.java
命令我得到一个 package org.apache.log4j does not exist
错误。
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>
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
我收到的错误消息是:
假设 1(错误):没有导入 post 源 class → 必须添加导入
您的 Main
class 中似乎缺少 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");
}
}
真正的问题(在我修复 post 中的图像显示后)
您运行不是使用 Maven 而是使用 command-line javac
进行编译。如果没有 maven,您就不会将依赖项自动添加到您的 classpath.
如果你想从命令行运行
在这种情况下,您必须将 log4j 添加到 class路径中。
它看起来像这样(运行ning 来自 sources 目录,在默认的 maven 布局中是 <project_root>\src\main\java
:
javac company/Main.java -cp %userprofile%\.m2\repository\log4j\log4j.2.17\log4j-1.2.17.jar
我假设您的本地 Maven 存储库在默认 Windows 路径 %userprofile%\.m2
中。如果它在其他部分(或 Linux),则必须将路径更改为 log4j-1.2.17.jar
.
在这种情况下,class Main.class
将被编译到与 Main.class
相同的包中。
如果要用maven编译
只需 运行 mvn compile
来自您的 pom.xml
所在的目录。
请注意,maven 会将 classes 编译到 target
目录中,即您编译的 class 将位于 \target\classes\company\Main.class
之类的路径中(相对于您的项目根目录,您的 pom.xml
是).