Нет основного атрибута манифеста в файле .jar - PullRequest
1 голос
/ 15 апреля 2020

Я просматривал несколько разных тем и не нашел решения. Я сделал проект, который извлекает данные из листов Google, используя java и Gradle. Я создал артефакт и собрал файл jar через intelliJ. Когда я пытаюсь запустить jar через терминал, используя "java -jar filename.jar", я не получаю атрибута основного манифеста, в filename.jar "

Мой 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'
}

Я ясно указал в каком классе основной метод, и вот почему это сообщение об ошибке, не имеет смысла для меня. У кого-нибудь есть решение для этого?

1 Ответ

0 голосов
/ 16 апреля 2020

Я выполнил шаги из API листов Быстрый запуск , чтобы настроить приложение. После этого я выполнил шаги из этого другого ответа , чтобы сгенерировать файл .jar, который объясняет, что вы должны объявить файл манифеста внутри файла build.gradle в свойстве jar .

После этого при запуске сгенерированного файла .jar я получил ошибку «Недопустимый файл подписи», которую мне удалось исправить, добавив строку ниже в свойстве jar, как описано здесь :

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

После создания файла .jar его можно найти в каталоге build/libs вашего проекта. Мой конечный файл build.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'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...