2011-03-31 5 views
5

저는 Maven에 초보자이며 프로젝트를 빌드하는 데 문제가 있습니다. 내가 깨끗하게 MVN을 사용 할 때까지 Maven을 사용하여 라이브러리를 참조 할 때 컴파일 오류가 발생합니다.

import org.apache.log4j.Logger; 

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

가 컴파일이 잘 갔다 나는 치어 파일

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

에 log4j에 종속성을 추가하고 난 내 클래스 중 하나의 정상적인 사용에 사용하고 명령. 내가 잘못하고있는 무슨

[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 

어떤 아이디어 : 내가 MVN 사용하여 내 프로젝트를 빌드 할 때 지금은 무엇입니까 컴파일?

답변

16

저는 Maven 전문가가 아니지만 log4j 범위는 runtime 대신 compile이어야합니다. 내가 틀렸다면 나를 바로 잡아주세요. maven doc 가입일

,

런타임 -이 범위는 종속성 컴파일 요구되지 것을 나타내지 만 실행된다. 은 런타임 클래스 및 테스트 클래스 경로 인 이지만 컴파일 클래스 경로는 아닙니다.

+0

효과가있었습니다. 고마워요! – special0ne

3

범위가 runtime 인 경우 원래의 의도는 SLF4J 또는 somesuch를 대신 사용하는 것입니다. Logger의 잘못된 네임 스페이스를 매우 쉽게 가져올 수 있습니다.

0

컴파일 범위를 사용하여 여전히 병을 전쟁에 넣습니다.

관련 문제