我正在尝试构建和运行一个在IntelliJ中使用slf4j日志记录的Spark网络服务器。它在最初用于添加日志记录的计算机上构建良好(也在IntelliJ中),但在我的机器上没有。
这是完整的<code>构建。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));
});
}
}
这是我得到的错误:
"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上看了几个问题,但似乎都没有解决问题:
我尝试了以下依赖项:
编译组:'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缓存(. gradle
文件夹)并重新下载了所有内容,这解决了问题。
如果您正在使用Gradle,请将这2行添加到您的build.gradle依赖项中以使用Spark 2.6.0
编译"com.sparkjava: spark-core: 2.6.0"
编译组:'org.slf4j',名称:'slf4j-Simple',版本:'1.7.21'
这是我的build.gradle文件: 有什么办法解决这个问题吗?对于mainClassName属性,我尝试了各种方法,但似乎都不起作用。
问题内容: 我将Javadoc doclet与gradle一起使用,因此需要使用package.tools.jar包,它位于jdk的lib文件夹中(本例中为1.6.0_26)。 关键是gradle不会自动获取它,因此我将那个工具包添加到我的libs文件夹中,然后将其添加到dependencies.gradle。 现在,我想直接从JDK主页将其带入我的dependencies.gradle。有没有办
我创建了一个具有以下配置的gradle项目: 当我执行“gradle build”时,出现以下错误消息: 找不到系统Java编译器。确保安装了JDK(不仅仅是JRE),并配置了JAVA_HOME系统变量以指向相应的目录。 这很奇怪,因为我有$JAVA_HOME set:
我将javadoc doclets与gradle一起使用,因此需要使用包tools.jar,它位于jdk的lib文件夹中(在我的示例中为1.6.0_26)。 重点是gradle不会自动获取它,所以我将这个工具包添加到我的libs文件夹中,然后将它添加到dependencies.gradle。 现在我想把它直接从JDK中放到Dependencies.gradle中。有办法做到这一点吗?我已经在我的依
我想做一个http://spring.io/guides/gs/rest-service/的教程,我做的一切都像教程一样。 当我试图用教程中的gradle.build构建gradle时,gradle构建失败了,因为丢失了。 我确实添加了它,现在编译正确开始和结束,但一旦我试图做 java-jar构建/libs/gs-rest-service-0.1.0.jar 我不知道该拿它怎么办。有帮助吗?
我有一个项目,我有apk,但我在calculate.java文件中更改了一个值,我想重建项目。但出现以下错误。我该怎么办?我不是android Studio开发人员,我只是一个新手。”找不到com.android.tools.build: gradle: 7.0.3。在以下位置搜索: https://dl.google.com/dl/android/maven2/com/android/tools