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

jar文件中没有主清单属性

逄俊力
2023-03-14

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

My Manifest.mf位于main/java/meta-inf中,具有以下简单结构

Manifest-Version: 1.0
Main-Class: Main

build.gradle文件具有以下结构:

plugins {
    id 'java'
}

group  'filename'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile 'com.google.api-client:google-api-client:1.30.4'
    compile 'com.google.oauth-client:google-oauth-client-jetty:1.30.4'
    compile 'com.google.apis:google-api-services-sheets:v4-rev581-1.25.0'
}

显然,我已经说明了main方法是什么类,这就是为什么这个errormessage对我来说没有意义的原因。有人对此有解决办法吗?

共有1个答案

席俊
2023-03-14

我遵循了Sheets API quickstart中的步骤来设置应用程序。之后,我按照另一个答案中的步骤生成.jar文件,这说明您应该在jar属性中的build.gradle文件中声明清单文件。

之后,当运行生成的.jar文件时,我得到了一个“无效签名文件”错误,我可以通过在jar属性中添加下面一行来修复这个错误,如下所述:

exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'

生成.jar文件后,您可以在项目的build/libs目录中找到它。我的endbuild.gradle文件如下所示:

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

group 'egs'
version '1.0-SNAPSHOT'

mainClassName = 'SheetsQuickstart'
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile 'com.google.api-client:google-api-client:1.30.4'
    compile 'com.google.oauth-client:google-oauth-client-jetty:1.30.4'
    compile 'com.google.apis:google-api-services-sheets:v4-rev581-1.25.0'
}

jar {
    manifest {
        attributes 'Main-Class': 'SheetsQuickstart'
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
}
 类似资料:
  • 我知道有很多像这样的题目,但我没有找到答案我的问题。我已经在IntelliJ中创建了JAR文件,并在项目结构中构建了工件。在Java文件夹中,我有一个包META-INF和manifest.mf: 那么我是否应该将它手动添加到IntelliJ中的JAR中呢? Edit:CrazyCoder给出了一个很好的说明,说明META-INF应该在resourse文件夹中,但是我的IntelliJ默认设置一开始

  • 我正在尝试运行由maven shade插件创建的jar。我正在以以下方式配置主类: 编辑:我使用jar tf app.jar检查了jar的内容,看到了一个manifest.mf文件。但它没有main类的条目。我如何确保jar中的清单文件中有这个条目,以便在shade插件配置中添加它?

  • 我知道jar文件应该有一个manifest.mf main-class:属性,以便有一个入口点并使jar文件可以运行。现在,我有了一个jar文件,我已经在下面构建了它。这些类都是卷饼包的一部分。我的MANIFEST.MF文件如下所示:

  • 我最近才开始在Java中玩弄Maven。测试我的项目的时间到了,它在NetBeans窗口中运行良好,运行了app.java(com.mycompany.app)中的主类,但是当我试图从命令行运行它时,我得到了一个错误: 有事吗?

  • 我写了一个简单的kotlin helloworld程序hello.kt 然后我用kotlinc编译了它 没有错误,你好。jar被生成。当我运行它时 它说hello.jar中没有主清单属性 我想不出这个问题。我的科特林版本是1.3.40,JDK版本是1.8.0

  • 我正在尝试运行这个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中没有主清单属性。罐子 做一些搜索周围,未能运行