Maven 找不到带有Gradle的slf4j LoggerFactory类定义

Maven 找不到带有Gradle的slf4j LoggerFactory类定义,maven,intellij-idea,gradle,slf4j,Maven,Intellij Idea,Gradle,Slf4j,我正在尝试构建并运行一个Spark Web服务器,该服务器使用IntelliJ中的slf4j登录。它在最初用于添加日志记录的计算机上(但不是在我的机器上)的IntelliJ中也可以很好地构建 以下是使用记录器的部件的完整build.gradle文件,请参见项目“:webserver”: buildscript { repositories { maven { url "https://plugins.gradle.org/m2/"

我正在尝试构建并运行一个Spark Web服务器,该服务器使用IntelliJ中的slf4j登录。它在最初用于添加日志记录的计算机上(但不是在我的机器上)的IntelliJ中也可以很好地构建

以下是使用记录器的部件的完整build.gradle文件,请参见项目“:webserver”:

buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "gradle.plugin.com.avast.gradle:docker-compose-gradle-plugin:0.3.27"
    }
}

subprojects {
    repositories {
        mavenLocal()
        mavenCentral()
        jcenter()
    }

    apply plugin: "java"
    apply plugin: "idea"
    apply plugin: "checkstyle"
    apply plugin: "pmd"
    apply plugin: "findbugs"
    apply plugin: "application"
    apply plugin: "com.avast.gradle.docker-compose"

    checkstyle {
        configFile = "../config/checkstyle/checkstyle.xml" as File
        toolVersion = "6.0"
    }
}

project(':webserver') {
    mainClassName = "org.passport.webserver.WebServer"
    dependencies {
        compile project(':core')
        compile "com.sparkjava:spark-core:2.6.0"
        testCompile 'junit:junit:4.12'
        compile group: 'org.json', name: 'json', version: '20090211'
        compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.6.1'
    }

    sourceSets {
        main {
            java {
                srcDir 'src/main/java/'
            }
        }
    }
}

project(':customsUI') {
    mainClassName = "org.passport.customsui.CustomsUI"
    dependencies {
        compile project(':core')
        testCompile 'junit:junit:4.12'
    }

    sourceSets {
        main {
            java {
                srcDir 'src/main/java/'
            }
        }
    }
}

project(':handlerUI') {
    mainClassName = "org.passport.handlerui.HandlerUI"
    dependencies {
        compile project(':core')
        testCompile 'junit:junit:4.12'
    }

    sourceSets {
        main {
            java {
                srcDir 'src/main/java/'
            }
        }
    }
}

project(':core') {
    mainClassName = "org.passport.core.PassPortChaincode"
    dependencies {
        compile 'io.grpc:grpc-all:0.13.2'
        compile 'commons-cli:commons-cli:1.3.1'
        compile 'org.glassfish:javax.json:1.1.0-M1'
        compile files('lib/shim-client-1.0.jar')
        testCompile 'junit:junit:4.12'
    }

    sourceSets {
        main {
            java {
                srcDir 'src/main/java/'
            }
        }
    }
}
package org.passport.webserver;

import org.passport.webserver.endpoints.ContainerClaimDao;
import org.passport.webserver.endpoints.PackageClaimDao;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static spark.Spark.before;
import static spark.Spark.get;
import static spark.Spark.path;
import static spark.Spark.post;

/**
 * The server matches requests (routs) and calls the appropriate endpoints.
 */
public final class Server {

    private static Logger logger = LoggerFactory.getLogger(Server.class);
    private static ContainerClaimDao containers = new ContainerClaimDao();
    private static PackageClaimDao packages = new PackageClaimDao();

    private Server() {

    }

    /**
     * Starts the router.
     * @param args run arguments
     */
    public static void main(String[] args) {
        path("/containers/:container-id", () -> {
            before("/*", (q, a) -> logger.info("Received api call: " + q.url() + "."));

            post("", (request, response) -> containers.add(request, response));

            get("/container-claims", (request, response) -> containers.get(request, response));

            get("/package-claims", (request, response) ->   packages.get(request, response));

        });
    }

}
以下是使用记录器的代码:

buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "gradle.plugin.com.avast.gradle:docker-compose-gradle-plugin:0.3.27"
    }
}

subprojects {
    repositories {
        mavenLocal()
        mavenCentral()
        jcenter()
    }

    apply plugin: "java"
    apply plugin: "idea"
    apply plugin: "checkstyle"
    apply plugin: "pmd"
    apply plugin: "findbugs"
    apply plugin: "application"
    apply plugin: "com.avast.gradle.docker-compose"

    checkstyle {
        configFile = "../config/checkstyle/checkstyle.xml" as File
        toolVersion = "6.0"
    }
}

project(':webserver') {
    mainClassName = "org.passport.webserver.WebServer"
    dependencies {
        compile project(':core')
        compile "com.sparkjava:spark-core:2.6.0"
        testCompile 'junit:junit:4.12'
        compile group: 'org.json', name: 'json', version: '20090211'
        compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.6.1'
    }

    sourceSets {
        main {
            java {
                srcDir 'src/main/java/'
            }
        }
    }
}

project(':customsUI') {
    mainClassName = "org.passport.customsui.CustomsUI"
    dependencies {
        compile project(':core')
        testCompile 'junit:junit:4.12'
    }

    sourceSets {
        main {
            java {
                srcDir 'src/main/java/'
            }
        }
    }
}

project(':handlerUI') {
    mainClassName = "org.passport.handlerui.HandlerUI"
    dependencies {
        compile project(':core')
        testCompile 'junit:junit:4.12'
    }

    sourceSets {
        main {
            java {
                srcDir 'src/main/java/'
            }
        }
    }
}

project(':core') {
    mainClassName = "org.passport.core.PassPortChaincode"
    dependencies {
        compile 'io.grpc:grpc-all:0.13.2'
        compile 'commons-cli:commons-cli:1.3.1'
        compile 'org.glassfish:javax.json:1.1.0-M1'
        compile files('lib/shim-client-1.0.jar')
        testCompile 'junit:junit:4.12'
    }

    sourceSets {
        main {
            java {
                srcDir 'src/main/java/'
            }
        }
    }
}
package org.passport.webserver;

import org.passport.webserver.endpoints.ContainerClaimDao;
import org.passport.webserver.endpoints.PackageClaimDao;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static spark.Spark.before;
import static spark.Spark.get;
import static spark.Spark.path;
import static spark.Spark.post;

/**
 * The server matches requests (routs) and calls the appropriate endpoints.
 */
public final class Server {

    private static Logger logger = LoggerFactory.getLogger(Server.class);
    private static ContainerClaimDao containers = new ContainerClaimDao();
    private static PackageClaimDao packages = new PackageClaimDao();

    private Server() {

    }

    /**
     * Starts the router.
     * @param args run arguments
     */
    public static void main(String[] args) {
        path("/containers/:container-id", () -> {
            before("/*", (q, a) -> logger.info("Received api call: " + q.url() + "."));

            post("", (request, response) -> containers.add(request, response));

            get("/container-claims", (request, response) -> containers.get(request, response));

            get("/package-claims", (request, response) ->   packages.get(request, response));

        });
    }

}
下面是我得到的错误:

"C:\Program Files\Java\jdk1.8.0_91\bin\java" -Didea.launcher.port=7534 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2016.2.4\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_91\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\rt.jar;C:\Users\lover\repositories\passport\webserver\build\classes\main;C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2016.2.4\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain org.passport.webserver.Server
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at org.passport.webserver.Server.<clinit>(Server.java:18)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:123)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 4 more
我已经研究了几个关于StackOverflow的问题,但似乎没有一个能解决这个问题:

-我正在和gradle一起构建,不认为我应该在我的类路径中下载/放置一些jar -同上 -又是罐子的东西 -我不确定胖jar/ShadowJar是否适用,也不确定如何修改构建文件以使用它们 -我尝试过多次刷新gradle,重启IntelliJ,甚至重启电脑 -见下文 我尝试了以下依赖项:

编译组:“org.slf4j”,名称:“slf4j-log4j12”,版本:“1.6.1” 编译“org.slf4j:slf4j api:1.7.24”并编译“org.slf4j:slf4j simple:1.7.24” 编译组:“org.slf4j”,名称:“slf4j simple”,版本:“1.6.1”
所有这些似乎都没有什么不同。有什么想法吗?

我最终删除了我的Gradle cache.Gradle文件夹并重新下载了所有内容,这解决了问题。

如果您使用的是Gradle,请将这两行添加到您的build.Gradle依赖项中以使用Spark 2.6.0

编译com.sparkjava:sparkcore:2.6.0


编译组:'org.slf4j',名称:'slf4j simple',版本:'1.7.21'

在执行过程中,类路径中似乎没有slf4j api。@Henry我如何添加它?如果我使用gradle,我不应该下载它并把它放在某个地方,对吗?它不应该处理好吗?感谢您将slf4j api添加到编译依赖项中,请使用与slf4j-log4j12相同的版本。@Henry我将其更改为编译组:“org.slf4j”,名称:“slf4j-log4j12”,版本:“1.6.1”,编译组:“org.slf4j”,名称:“slf4j api”,版本:“1.6.1”,刷新了gradle,并尝试再次运行服务器,但我也犯了同样的错误。服务器是由gradle启动的,还是以另一种方式启动的?他尝试了许多方法,这是为了澄清,假设一个干净的缓存是实现这一点的最简洁的方法,并且具有Spark 2.6.0官方文档中提供的slf4j版本号