[英]No main manifest attribute in .jar file
我一直在尋找幾個不同的線程,但沒有找到解決方案。 我做了一個項目,它使用 java 和 gradle 從谷歌表格中檢索數據。 我創建了一個工件並通過 intelliJ 構建了 jar 文件。 當我嘗試使用“java -jar filename.jar”通過終端運行 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'
}
顯然,我已經在 class 中說明了主要方法是什么,這就是為什么這個錯誤消息對我來說毫無意義。 有人對此有解決方案嗎?
我已按照表格 API快速入門中的步驟設置應用程序。 之后,我按照其他答案中的步驟生成 .jar 文件,這說明您應該在jar屬性內的 build.gradle 文件中聲明清單文件。
在此之后,當運行生成的.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'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.