簡體   English   中英

錯誤:從cmd運行代碼時,包org.apache.log4j不存在

[英]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

我收到的錯誤消息是:

在此處輸入圖片說明

假設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");
    }
} 

真正的問題(我固定了帖子中的圖片顯示后)

您不是通過命令行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相同的包中。

如果要使用Maven進行編譯

只需從pom.xml所在的目錄中運行mvn compile 請注意,maven會將類編譯到target目錄中,即,已編譯的類將位於\\target\\classes\\company\\Main.class路徑中(相對於項目根,即pom.xml所在的位置)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM