我只是想在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 1It 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.jarNote 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
发布评论