简体   繁体   English

Gradle 找不到依赖项

[英]Gradle does not find dependencies

I am trying to use Gradle and the file looks like:我正在尝试使用 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'
}

As you can see, I've added two dependencies and want to use in a class如您所见,我添加了两个依赖项并希望在一个类中使用

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);

    }
}

When I execute the statement gradle assemble , I've got the compiler error.当我执行语句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.

What am I doing wrong?我究竟做错了什么?

Update I changed my code to this:更新我将代码更改为:

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!");

    }
}

The compiler complain:编译器抱怨:

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更新 2
After execute:执行后:

>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

It seems like you still need the log4j dependency itself: compile: 'log4j:log4j:versionX'似乎您仍然需要 log4j 依赖项本身: compile: 'log4j:log4j:versionX'

Update 1 :更新 1

And ofcourse you should add:当然你应该添加:

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

Update 2 :更新2

I use the following dependencies:我使用以下依赖项:

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

Than in the code I import:比在我导入的代码中:

import org.apache.log4j.Logger;

And use the logger like this:并像这样使用记录器:

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

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

Instead of代替

import org.apache.log4j.Logger;

use采用

import org.apache.logging.log4j.Logger;

and define the instance of LOGGER并定义 LOGGER 的实例

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

See this sample http://logging.apache.org/log4j/2.x/manual/api.html请参阅此示例http://logging.apache.org/log4j/2.x/manual/api.html

this has nothing todo with Gradle这与 Gradle 无关

我还必须添加到依赖项:

compile "org.apache.logging.log4j:log4j-api:2.3"

the first answer (@helox) helped in fixing the similar issue , i used gradle 7.1.1 and below is the snippet when included resolved the cannot find symbol of Logger error due the package not found for "org.apache.log4j.Logger"第一个答案(@helox)帮助解决了类似的问题,我使用了 gradle 7.1.1 和以下是包含时的片段,解决了由于找不到“org.apache.log4j.Logger”的包而无法找到 Logger 错误的符号

testImplementation 'org.slf4j:slf4j-api:1.7.32'
testImplementation 'org.slf4j:slf4j-log4j12:1.7.32'
implementation 'log4j:log4j:1.2.17'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM