2015-06-19 5 views
3

Я пытаюсь использовать Gradle и файл выглядит следующим образом:Gradle не находит зависимости

// Apply the java plugin to add support for Java 
apply plugin: 'java' 

// In this section you declare where to find the dependencies of your project 
repositories { 
    // Use 'jcenter' for resolving your dependencies. 
    // You can declare any Maven/Ivy/file repository here. 
    mavenCentral() 
    jcenter() 
} 

jar { 
    manifest { 
     attributes 'Main-Class': 'execute.Entry' 
    } 
} 

// In this section you declare the dependencies for your production and test code 
dependencies { 
    // The production code uses the SLF4J logging API at compile time 
    compile 'org.slf4j:slf4j-api:1.7.12' 
    compile 'org.apache.logging.log4j:log4j:2.3' 

    // Declare the dependency for your favourite test framework you want to use in your tests. 
    // TestNG is also supported by the Gradle Test task. Just change the 
    // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add 
    // 'test.useTestNG()' to your build script. 
    testCompile 'junit:junit:4.12' 
} 

Как вы можете видеть, я добавил две зависимости и хотите использовать в классе

package execute; 

import message.*; 
import org.apache.log4j.Logger; 

public class Entry { 

    public static void main(String[] args) { 

     Service s = new Service(); 
     String msg = s.GetMessage(); 
     LOGGER.info("Received msg: " + msg); 

    } 
} 

Когда я выполняю оператор gradle assemble, у меня ошибка компилятора.

D:\Java\entrypoint\src\main\java\execute\Entry.java:4: error: package org.apache.log4j does not exist 
import org.apache.log4j.Logger; 
        ^
D:\Java\entrypoint\src\main\java\execute\Entry.java:12: error: cannot find symbol 
     LOGGER.info("Received msg: " + msg); 
     ^
    symbol: variable LOGGER 
    location: class Entry 
2 errors 
:compileJava FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':compileJava'. 
> Compilation failed; see the compiler error output for details. 

* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 

BUILD FAILED 

Total time: 6.261 secs 
Compilation failed; see the compiler error output for details. 

Что я делаю неправильно?

Update Я изменил код так:

package execute; 

import message.*; 
import org.apache.logging.log4j.Logger; 
import org.apache.logging.log4j.LogManager; 

public class Entry { 

    private static final Logger logger = LogManager.getLogger("HelloWorld"); 

    public static void main(String[] args) { 

     Service s = new Service(); 
     String msg = s.GetMessage(); 
     logger.info("Hello, World!"); 

    } 
} 

Компилятор жалуется:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager 
     at execute.Entry.<clinit>(Entry.java:9) 
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     ... 1 more 

Update 2
После выполнения:

>gradle dependencies 
:dependencies                  

------------------------------------------------------------ 
Root project     
------------------------------------------------------------ 

archives - Configuration for archive artifacts. 
No dependencies             

compile - Compile classpath for source set 'main'. 
\--- org.apache.logging.log4j:log4j-api:2.3      

default - Configuration for default artifacts. 
\--- org.apache.logging.log4j:log4j-api:2.3      

runtime - Runtime classpath for source set 'main'. 
\--- org.apache.logging.log4j:log4j-api:2.3      

testCompile - Compile classpath for source set 'test'. 
+--- org.apache.logging.log4j:log4j-api:2.3       
\--- junit:junit:4.12   
    \--- org.hamcrest:hamcrest-core:1.3 

testRuntime - Runtime classpath for source set 'test'. 
+--- org.apache.logging.log4j:log4j-api:2.3       
\--- junit:junit:4.12   
    \--- org.hamcrest:hamcrest-core:1.3 

BUILD SUCCESSFUL 
+1

Подобно тому, как в сторону, вы не хотите, чтобы войти против SLF4J регистратор? – Alex

+0

'LOGGER' не определен, поэтому он никогда не сработает. Во-вторых, это частичное сообщение об ошибке. Какую задачу вы выполняете и как. –

ответ

0

Похоже, вы все еще нуждаются в самой log4j зависимость: compile: 'log4j:log4j:versionX'

Update 1:

и, конечно, вы должны добавить:

private static final Logger logger = Logger.getLogger(DrglMutatieBerichtMdb.class); 

Update 2:

I используйте следующие зависимости:

compile 'log4j:log4j:1.2.17' 
compile 'org.slf4j:slf4j-api:1.7.5' 
compile 'org.slf4j:slf4j-log4j12:1.7.5' 

чем в коде я импортировать:

import org.apache.log4j.Logger; 

и использовать регистратор как это:

private static final Logger logger = Logger.getLogger(DrglMutatieBerichtMdb.class); 

private static void testLogger(){ 
    logger.debug("The logger works!"); 
} 
+0

Я пошел на сайт http: //search.maven.org/type Log4j в поле ввода, нажмите на новейшую версию и появится информация о зависимости. Затем нажмите Gradle/Grails и скопируйте компиляцию 'org.apache.logging.log4j: log4j: 2.3' в мой файл градимента. Правильно добавить зависимость? –

+0

Да, это, вероятно, ригфт. – HELOX

+0

Почему я получаю ошибку компилятора? –

0

Вместо

import org.apache.log4j.Logger; 

использование

import org.apache.logging.log4j.Logger; 

и определить экземпляр LOGGER

private static final Logger LOGGER = LogManager.getLogger("HelloWorld"); 

Смотрите этот образец http://logging.apache.org/log4j/2.x/manual/api.html

это не имеет ничего не сделать с Gradle

+0

Это совсем не работает. –

+0

Что вы получаете, когда выполняете '' зависимостей градиентов''' – maxb

+0

Я обновил свое описание выше. –

Смежные вопросы