gpt4 book ai didi

java - 成功的 Gradle 项目构建在运行时会产生 NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-02 03:00:53 25 4
gpt4 key购买 nike

我正在使用 Gradle 在 Eclipse 中构建我的 Java 项目。 gradle.build如下

apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile group: 'com.flowpowered', name: 'flow-nbt', version: '1.0.0'
compile group: 'org.reflections', name: 'reflections', version: '0.9.10'
}

通过 Eclipse 运行时,所有库都可以正常运行。但有时在命令行上工作很有用。在命令行上运行时,即使构建成功且代码包含,也会出现运行时错误 Exception in thread "main"java.lang.NoClassDefFoundError: com/flowpowered/nbt/regionfile/SimpleRegionFileReader从这些库导入。我尝试过清理和重建,以及 gradlew build --refresh-dependencies ,但我仍然遇到相同的运行时错误。

我会假设这些库从未真正导入过?或者它们没有存储在 java 项目认为它们所在的位置?我对 Gradle 不熟悉,所以欢迎任何建议。

最佳答案

根据发布的 build.gradle 文件,您没有将应用程序打包为可执行 JAR。

首先应用application插件。但这还不够,因为如果没有其所有依赖项,您将无法将可执行文件作为单个 JAR 运行。也应用 shadow 插件。

这两个插件将使您能够执行以下任务:

  • run:从 gradle 的命令行执行应用程序。
  • runShadow:执行应用程序,但将所有依赖项与已编译的类和资源一起打包在一个 JAR 中。
  • shadowJar:使用已编译的类和所有依赖项创建一个“fat JAR”。

因此您的 build.gradle 可能如下所示

plugins {
id 'java'
id 'application'
id 'com.github.johnrengelman.shadow' version '1.2.4'
}
mainClassName = 'com.acme.YourMainClassName'
repositories {
mavenCentral()
}
dependencies {
compile group: 'com.flowpowered', name: 'flow-nbt', version: '1.0.0'
compile group: 'org.reflections', name: 'reflections', version: '0.9.10'
}

插件文档:

关于java - 成功的 Gradle 项目构建在运行时会产生 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42376191/

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