使用gradle创建可运行的* .jar时出现NoClassDefFoundError:org / slf4j / LoggerFactory

编程入门 行业动态 更新时间:2024-10-23 12:29:07
本文介绍了使用gradle创建可运行的* .jar时出现NoClassDefFoundError:org / slf4j / LoggerFactory的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我只是想在gradle和应用程序插件的帮助下为我的应用程序创建一个可运行的* .jar文件。

构建结束没有错误,清单文件是OK等等,但是当运行* .jar文件时会发生这种情况:

java.lang.NoClassDefFoundError :org / slf4j / LoggerFactory 在main.Launcher。< clinit>(Launcher.java:19)引起:java.lang.ClassNotFoundException:org.slf4j.LoggerFactory at java .URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java) :331)在java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 1更多线程main中的异常进程已完成退出代码1

很明显我错过了这个库,但是它被指定:

build.gradle

group'Comparator' version'0.9' apply plugin:'java' apply plugin:'application' mainClassName =main.Launcher compileJava { //在单独的守护程序进程中启用编译 options.fork = true //启用增量编译 options.incremental = true } 存储库{ mavenCentral() } 依赖关系{ testCompile组:'junit',名称:'junit',版本:'4.11' // GraphStream核心编译组:'org.graphstream',名称:'gs-core',版本: '1.3' // GraphStream // UI 编译组:'org.graphstream',名称:'gs-ui',版本:'1.3' // GraphStream // algo 编译组:'org.graphstream',名称:'gs-algo',版本:'1.3' // Jena // https:// mvnrepository/artifact/org.apache.jena/jena-arq co mpile group:'org.apache.jena',name:'jena-arq',version:'2.13.0' compile group:'org.apache.jena',name:'jena-querybuilder',version :'2.13.0' // Log 编译组:'org.slf4j',名称:'slf4j-api',版本:'1.7.21' 编译组:'ch.qos.logback',名称:'logback-classic',版本:'1.0.9'编译组:'ch.qos.logback',名称:'logback-core ',版本:'1.0.9' // mvnrepository/artifact/org.jgrapht/jgrapht-core 编译组:'org.jgrapht',名称:'jgrapht- core',version:'0.9.2'编译组:'org.jgrapht',名称:'jgrapht-jdk1.5',版本:'0.7.3'编译组:'org。 jgrapht',name:'jgrapht-ext',version:'0.9.2' // CSV解析器编译组:'com.univocity',name:'univocity-parsers',version:' 1.0.0' // mvnrepository/artifact/c om.google.guava / guava 编译组:'com.google.guava',名称:'guava',版本:'11 .0.2' } jar { manifest { attributes'Main-Class':mainClassName,'Class-Path':configurations.runtime.files.collect {$ it.name } .join('')} }

创建的清单如下:

清单 - 版本:1.0 主类:main.Launcher 类 - 路径:gs-core-1.3.jar gs-ui-1.3.jar gs-algo-1.3.jar jena-arq-2.1 3.0.jar jena-querybuilder-2.13.0.jar slf4j-api-1.7。 21.jar logback-cla ssic-1.0.9.jar logback-core-1.0.9.jar jgrapht-core-0.9.2.jar jgrapht- jdk1.5-0.7.3.jar jgrapht-EXT-0.9.2.jar单义的解析器-1.0.0.jar区 AVA-11.0.2.jar的JUnit 4.12.jar pherd-1.0.jar mbox2-1.0.jar斯卡拉 - 天秤座 ry-2.10.1.jar commons-math-2.1.jar commons-math3-3.4.1.jar jfreechart -1.0.14.jar jena-core-2.13.0.jar httpclie NT-4.2.6.jar jsonld-java的0.5 .1.jar HttpClient的缓存-4.2.6.jar libthrift-0.9.2.jar公地-CSV-1.0 的.jar公地lang3 -3.3.2.jar SLF4J-log4j12-1.7.6.jar的log4j-1.2.17.jar Apache的耶拿 - 库 - 2.13.0.pom jgraphx-2.0.0.1.jar jgraph-5.13.0.0。罐子 jsr305-1.3.9.jar hamcrest核-1.3.jar jcommon-1.0.17.jar iText的-2.1.5 的.jar耶拿-IRI-1.1.2.jar xercesImpl 2.11。 0.jar httpcore-4.2.5.jar comm ons-codec-1.6.jar jackson-core-2.3.3.jar jackson-databind-2.3.3.jar j ena-tdb-1.1 .2.jar bcmail-jdk14-138.jar bcprov-jdk14-138.jar杰克逊-A nnotations-2.3.0.jar JCL-过SLF4J-1.7.7.jar共享记录-1.1.1 .j ar xml-apis-1.4.01.jar

请注意,它确实包括slf4j,但我仍然得到例外。 有什么想法吗?

谢谢!

解决方案

一段时间后,我来到(我认为是)解决方案。这对生成的类路径有不同的依赖关系是个大问题。从头开始生成项目并导入代码和资源证明是一个成功的构建。

如果您遇到相同的错误我提出相同的解决方案,只需从头开始重建项目。 / p>

是的,可能有更好的解决方案,但我在1个月内找不到它。

I'm just trying to create a runnable *.jar file for my application with the help of gradle and the application plugin.

Building ends with no errors, manifest file is OK etc etc, but when it comes to running the *.jar file this happens:

java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory at main.Launcher.<clinit>(Launcher.java:19) Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory at java.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) ... 1 more Exception in thread "main" Process finished with exit code 1

It seems obvious that I am missing the library, but it is specified:

build.gradle

group 'Comparator' version '0.9' apply plugin: 'java' apply plugin: 'application' mainClassName = "main.Launcher" compileJava { //enable compilation in a separate daemon process options.fork = true //enable incremental compilation options.incremental = true } repositories { mavenCentral() } dependencies { testCompile group: 'junit', name: 'junit', version: '4.11' // GraphStream Core compile group: 'org.graphstream', name: 'gs-core', version: '1.3' // GraphStream //UI compile group: 'org.graphstream', name: 'gs-ui', version: '1.3' // GraphStream //algo compile group: 'org.graphstream', name: 'gs-algo', version: '1.3' // Jena // mvnrepository/artifact/org.apache.jena/jena-arq compile group: 'org.apache.jena', name: 'jena-arq', version: '2.13.0' compile group: 'org.apache.jena', name: 'jena-querybuilder', version: '2.13.0' // Log compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.21' compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.0.9' compile group: 'ch.qos.logback', name: 'logback-core', version: '1.0.9' // mvnrepository/artifact/org.jgrapht/jgrapht-core compile group: 'org.jgrapht', name: 'jgrapht-core', version: '0.9.2' compile group: 'org.jgrapht', name: 'jgrapht-jdk1.5', version: '0.7.3' compile group: 'org.jgrapht', name: 'jgrapht-ext', version: '0.9.2' // CSV parser compile group: 'com.univocity', name: 'univocity-parsers', version: '1.0.0' // mvnrepository/artifact/com.google.guava/guava compile group: 'com.google.guava', name: 'guava', version: '11.0.2' } jar { manifest { attributes 'Main-Class': mainClassName, 'Class-Path': configurations.runtime.files.collect { "$it.name" }.join(' ') } }

The created manifest is as follows:

Manifest-Version: 1.0 Main-Class: main.Launcher Class-Path: gs-core-1.3.jar gs-ui-1.3.jar gs-algo-1.3.jar jena-arq-2.1 3.0.jar jena-querybuilder-2.13.0.jar slf4j-api-1.7.21.jar logback-cla ssic-1.0.9.jar logback-core-1.0.9.jar jgrapht-core-0.9.2.jar jgrapht- jdk1.5-0.7.3.jar jgrapht-ext-0.9.2.jar univocity-parsers-1.0.0.jar gu ava-11.0.2.jar junit-4.12.jar pherd-1.0.jar mbox2-1.0.jar scala-libra ry-2.10.1.jar commons-math-2.1.jar commons-math3-3.4.1.jar jfreechart -1.0.14.jar jena-core-2.13.0.jar httpclient-4.2.6.jar jsonld-java-0.5 .1.jar httpclient-cache-4.2.6.jar libthrift-0.9.2.jar commons-csv-1.0 .jar commons-lang3-3.3.2.jar slf4j-log4j12-1.7.6.jar log4j-1.2.17.jar apache-jena-libs-2.13.0.pom jgraphx-2.0.0.1.jar jgraph-5.13.0.0.jar jsr305-1.3.9.jar hamcrest-core-1.3.jar jcommon-1.0.17.jar itext-2.1.5 .jar jena-iri-1.1.2.jar xercesImpl-2.11.0.jar httpcore-4.2.5.jar comm ons-codec-1.6.jar jackson-core-2.3.3.jar jackson-databind-2.3.3.jar j ena-tdb-1.1.2.jar bcmail-jdk14-138.jar bcprov-jdk14-138.jar jackson-a nnotations-2.3.0.jar jcl-over-slf4j-1.7.7.jar commons-logging-1.1.1.j ar xml-apis-1.4.01.jar

Note that it does include slf4j, but i am still getting the exception. Any ideas?

Thank you!

解决方案

After some time i've come to the (what i think is) solution. It was a big problem with different dependencies on the generated classpath. Generating the project from scratch and importing code and resources proved a succesfull build.

If you encounter the same error i propose the same solution, just rebuild the project from scratch.

Yes, there probably is a better solution but i could not find it in 1 month.

更多推荐

使用gradle创建可运行的* .jar时出现NoClassDefFoundError:org / slf4j / LoggerFactory

本文发布于:2023-11-14 10:13:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1586939.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:NoClassDefFoundError   jar   gradle   LoggerFactory   slf4j

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!