当前位置: 首页 > 知识库问答 >
问题:

运行使用Gradle构建的JAR文件时没有主清单属性

宓弘壮
2023-03-14

我使用Gradle编写了一个小型Java应用程序来构建它。该应用程序来自本教程,包含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运行它时,我得到了错误没有主清单属性。StackOverflow上找到的解决方案之一建议将文件运行为

java -cp HelloWorld.jar hello.HelloWorld

java -cp HelloWorld.jar HelloWorld

第一个返回无法找到或加载主类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不把主类的信息放入清单文件。你有什么建议吗?代码直接来自教程,所以应该没问题,但不是。我重复一遍,通过gradle运行应用程序没有问题。

共有1个答案

贺奕
2023-03-14

发生此错误的原因是org。乔达。时间运行hello时,LocalTime不会添加到类路径中。HelloWorld

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

 类似资料:
  • 我正在尝试运行这个Java GUI应用程序,但我不确定如何让它运行。该项目位于:https://gitee.com/gangshushu/v7/tree/master/admon_gui/one-jar. 我最初的尝试是: javaone-jar-ant-task-0.97.jar 但我最后犯了一个错误: 在one-jar-ant-task-0.97中没有主清单属性。罐子 做一些搜索周围,未能运行

  • 我知道有很多像这样的题目,但我没有找到答案我的问题。我已经在IntelliJ中创建了JAR文件,并在项目结构中构建了工件。在Java文件夹中,我有一个包META-INF和manifest.mf: 那么我是否应该将它手动添加到IntelliJ中的JAR中呢? Edit:CrazyCoder给出了一个很好的说明,说明META-INF应该在resourse文件夹中,但是我的IntelliJ默认设置一开始

  • 我已经看了几个不同的线程,没有找到解决方案。我做了一个项目,使用java和Gradle从google sheets检索数据。我已经创建了一个工件,并通过IntelliJ构建了jar文件。当我尝试使用“java-jar filename.jar”通过终端运行jar时,我得到“no main manifest attribute,in filename.jar” My Manifest.mf位于mai

  • 我试图创建一个名为example.java的简单jar程序,它向用户显示“hello world”,代码如下: 我的清单文件如下: 运行此命令时: Java-贾尔HelloWorld.jar 它返回 这里的问题是什么?为什么我不能运行JAR文件?我已经找了一些例子,但那些和我不一样。有人愿意帮忙吗?谢谢!

  • 我试图从控制台运行一个jar文件: 我得到了错误: 无法执行jar文件:“无主清单属性” 正如你所见,我实际上有一个主文件,它在eclipse中运行良好: 我需要做什么才能从命令行成功运行这个文件?

  • 我正在用Gradle构建一个JAR文件。当我尝试运行它时,我得到了错误 RxJavaD中没有主清单属性emo.jar 我试图操纵清单属性,但我想我忘记向它添加依赖项或其他东西了。我到底做错了什么?