gpt4 book ai didi

java - 运行使用 Gradle 构建的 JAR 文件时“没有主要 list 属性”

转载 作者:搜寻专家 更新时间:2023-10-31 20:27:14 25 4
gpt4 key购买 nike

我使用 Gradle 编写了一个小型 Java 应用程序来构建它。应用来自this tutorial并包含 2 个类:HelloWorld(主类)和 Greeter。 build.gradle 文件包含 2 个部分(以及其他部分,目前不相关):

apply plugin: 'application'
mainClassName = 'hello.HelloWorld'

dependencies {
compile "joda-time:joda-time:2.2"
}

(这是必要的,因为 HelloWorld 类导入了 org.joda.time.LocalTime 类)。我可以使用 gradle build 构建应用程序并使用 gradle run 运行它。一切正常,我得到了结果。但是,当我尝试使用 java -jar HelloWorld.jar 运行它时,出现错误 No main manifest attribute。在 StackOverflow 上找到的解决方案之一建议将文件运行为

java -cp HelloWorld.jar hello.HelloWorld

java -cp HelloWorld.jar HelloWorld

第一个返回Could not find or load main class HelloWorld,第二个返回java.lang.NotClassDefFoundError"org/joda/time/LocalTime。JAR存档包含以下文件:

  0 Mon Jul 06 13:13:46 CEST 2015 META-INF/
25 Mon Jul 06 13:13:46 CEST 2015 META-INF/MANIFEST.MF
0 Mon Jul 06 13:13:46 CEST 2015 hello/
369 Mon Jul 06 13:13:46 CEST 2015 hello/Greeter.class
988 Mon Jul 06 13:13:46 CEST 2015 hello/HelloWorld.class

我不知道为什么 gradle 不将有关主类的信息放入 list 文件中。你有什么建议吗?代码直接来自教程,所以应该没问题,但事实并非如此。我重复一遍,通过 gradle 运行该应用程序没有问题。

最佳答案

发生此错误是因为 org.joda.time.LocalTime 在运行 hello.HelloWorld 时未添加到类路径。

  1. 它可以在类路径设置下运行:gradle run
  2. 您可以使用 this 将此依赖项包含在 jar 中插件。
  3. 或者使用 distZip 任务准备一个分发版,将其解压缩并使用 sh 或 bat 脚本运行准备好的工件。

关于java - 运行使用 Gradle 构建的 JAR 文件时“没有主要 list 属性”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31245044/

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