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