簡體   English   中英

使用Maven引用庫時出現編譯錯誤

[英]compilation error when referring to a library using maven

我是Maven的新手,在構建項目時遇到了一些麻煩。 我已經將log4j依賴項添加到pom文件中

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.16</version>
        <scope>runtime</scope>
    </dependency>

我在一堂課中正常使用它

import org.apache.log4j.Logger;

public class ConnectionPoolImpl implements Runnable, ConnectionPool {
  static Logger logger = Logger.getLogger(ConnectionPoolImpl.class);

直到我使用mvn clean命令為止,編譯過程都進行順利。 現在,當我嘗試使用mvn compile構建項目時,我得到:

[INFO] Compiling 2 source files to C:\Temp\cp\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] \Temp\cp\src\main\java\com\opower\connectionpool\ConnectionPoolImpl.java
:[9,23] package org.apache.log4j does not exist
[ERROR] \Temp\cp\src\main\java\com\opower\connectionpool\ConnectionPoolImpl.java
:[19,9] cannot find symbol
symbol  : class Logger
location: class com.opower.connectionpool.ConnectionPoolImpl
[ERROR] \Temp\cp\src\main\java\com\opower\connectionpool\ConnectionPoolImpl.java
:[19,25] cannot find symbol
symbol  : variable Logger
location: class com.opower.connectionpool.ConnectionPoolImpl
[INFO] 3 errors

任何想法我在做什么錯?

我不是Maven專家,但是log4j范圍應該是compile而不是runtime 如果我錯了,請糾正我。

maven doc中

運行時-此作用域指示依賴關系不是編譯所必需的,而是執行所必需的。 它在運行時和測試類路徑中,但不在編譯類路徑中。

如果您將范圍用作runtime ,則最初的意圖可能是使用SLF4J或類似的東西。 Logger導入錯誤的名稱空間非常容易。

使用編譯范圍,仍然使罐子陷入了戰爭。

暫無
暫無

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

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