ошибка компиляции при обращении к библиотеке с помощью maven - PullRequest
5 голосов
/ 31 марта 2011

Я новичок в 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

есть идеи, что я делаю не так?

Ответы [ 3 ]

16 голосов
/ 31 марта 2011

Я не специалист Maven, но область действия log4j должна быть compile вместо runtime.Пожалуйста, поправьте меня, если я ошибаюсь.

From maven doc ,

runtime - эта область указывает, что зависимость не требуется для компиляции, но предназначена для выполнения.Он находится во время выполнения и пути к классам теста, но не в пути к классам компиляции.

3 голосов
/ 21 марта 2012

Если у вас была область действия как runtime, первоначально предполагалось использовать SLF4J или что-то подобное.Очень легко импортировать неправильное пространство имен для Logger.

0 голосов
/ 21 февраля 2016

Используя область компиляции, по-прежнему ставит банки на войну.

...