gpt4 book ai didi

java - 在命令Pompt(Gradle Build)中执行Jar文件时出错:NoClassDefFoundError:org/apache/poi/xssf/usermodel/XSSFWorkbook

转载 作者:行者123 更新时间:2023-12-03 05:50:22 28 4
gpt4 key购买 nike

我正在使用Gradle Build构建Java项目。该项目具有一些外部依赖项,例如Apache POI,Spring Core / Context,Log4j。当我在IDE中运行项目时,它正在编译并成功执行,没有任何错误。
但是,当我使用gradle build构建Jar文件并在命令提示符下运行它(使用“java -jar file-name”)时,出现错误-

NoClassDefFoundError:org / apache / poi / xssf / usermodel / XSSFWorkbook

这是我的build.gradle文件-

buildscript{
repositories{
mavenCentral()
}

dependencies{
classpath group: 'org.springframework', name: 'spring-core', version: '5.0.2.RELEASE'
classpath group: 'org.springframework', name: 'spring-context', version: '5.0.2.RELEASE'
classpath group: 'org.apache.poi', name: 'poi', version: '3.17'
classpath group: 'org.apache.poi', name: 'poi-ooxml', version: '3.17'
classpath group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: '3.17'
classpath group: 'org.apache.commons', name: 'commons-collections4', version: '4.1'
classpath group: 'org.apache.xmlbeans', name: 'xmlbeans', version: '2.6.0'
}
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
mavenCentral()
}

mainClassName = '<package>.HelloWorld'

dependencies{

compile 'org.apache.poi:poi:3.17'
compile 'org.apache.poi:poi-ooxml:3.17'
compile 'org.apache.poi:poi-ooxml-schemas:3.17'
compile 'org.springframework:spring-core:5.0.2.RELEASE'
compile 'org.springframework:spring-context:5.0.2.RELEASE'
compile 'org.apache.commons:commons-collections4:4.1'
compile 'org.apache.xmlbeans:xmlbeans:2.6.0'

}

jar {
manifest{
attributes '<package>.HelloWorld'
}
baseName = 'finder-app'
version = '0.1.0'
}

依赖项jar文件位于我的本地计算机上。

使用build.gradle打包jar时是否需要添加jar文件?如果是,那怎么办?要么

我是否需要将CLASSPATH(到外部jar目录)添加到本地计算机环境变量中?

最佳答案

您可以尝试以下build.gradle,它将提供一个uber jar,它打包了所有依赖项(doc reference)。

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3'
}
}

apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'com.github.johnrengelman.shadow'

repositories {
jcenter()
}

dependencies {
compile 'com.google.guava:guava:23.0'

testCompile 'junit:junit:4.12'
}

mainClassName = "com.github.Library"

dependencies{
compile 'org.apache.poi:poi:3.17'
compile 'org.apache.poi:poi-ooxml:3.17'
compile 'org.apache.poi:poi-ooxml-schemas:3.17'
compile 'org.springframework:spring-core:5.0.2.RELEASE'
compile 'org.springframework:spring-context:5.0.2.RELEASE'
compile 'org.apache.commons:commons-collections4:4.1'
compile 'org.apache.xmlbeans:xmlbeans:2.6.0'
}

shadowJar {
baseName = 'finder-app'
version = '0.1.0'
}

只需运行 ./gradlew :shadowJar,然后就可以运行 java -jar build/libs/finder-app-0.1.0-all.jar。它将对您有利。

注意,您在 buildscript{}中不需要太多无关的依赖项,这些依赖项供插件使用。

关于java - 在命令Pompt(Gradle Build)中执行Jar文件时出错:NoClassDefFoundError:org/apache/poi/xssf/usermodel/XSSFWorkbook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48158333/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com