为了账号安全,请及时绑定邮箱和手机立即绑定

错误:从 cmd 运行代码时包 org.apache.log4j 不存在

错误:从 cmd 运行代码时包 org.apache.log4j 不存在

DIEA 2023-02-23 16:33:33
运行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.propertieslog4j.rootCategory=debug,consolelog4j.logger.com.demo.package=debug,consolelog4j.additivity.com.demo.package=falselog4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.target=System.outlog4j.appender.console.immediateFlush=truelog4j.appender.console.encoding=UTF-8log4j.appender.console.layout=org.apache.log4j.PatternLayoutlog4j.appender.console.layout.conversionPattern=%d [%t] %-5p %c - %m%n我收到的错误信息是:
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

假设 1(错误):源类中没有导入 → 必须添加导入

看起来你import在课堂上缺少陈述Main。尝试这个:


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 buth 和 command-line javac。没有 Maven,您就不会自动将依赖项添加到您的类路径中。


如果你想从命令行运行

在这种情况下,您必须将 log4j 添加到类路径中。它看起来像这样(从 sources 目录运行,这是<project_root>\src\main\java默认的 maven 布局:


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。


如果你想用maven编译

mvn compile只需从您所在的目录运行即可pom.xml。请注意,maven 会将类编译到target目录中,即您编译的类将在路径中\target\classes\company\Main.class(相对于您的项目根目录,您pom.xml所在的位置)。


查看完整回答
反对 回复 2023-02-23
  • 1 回答
  • 0 关注
  • 245 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信