我正在尝试将我的项目从Intellij导出到jar。每当我尝试双击jar并启动它时,它会给出错误“无法启动Java Jar文件。请查看控制台以获取更多信息”。然后控制台说“没有主要的清单属性”。我搜索了一下,发现我的Manifest没有正确导出。在Intellij中,它在MANIFEST.MF中有xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".startingfragment">
。
我用Unarchiver打开jar,属性缺少jar的清单。导出的清单包含:
Main-Class: MainFrame
虽然我在Intellij中的表现包含:
Manifest-Version: 1.0
Bundle-Description: Servlet Specification API
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0
Bundle-SymbolicName: org.mortbay.jetty.servlet-api
Archiver-Version: Plexus Archiver
Built-By: janb
Bundle-RequiredExecutionEnvironment: J2SE-1.4
Bnd-LastModified: 1229016831353
Bundle-ManifestVersion: 2
Bundle-DocURL: http://www.mortbay.com
Bundle-Vendor: Mort Bay Consulting
Tool: Bnd-0.0.238
Implementation-Vendor: JCP
Originally-Created-By: 1.5.0_13 (Sun Microsystems Inc.)
Export-Package: javax.servlet.http;uses:="javax.servlet";version="2.5"
,javax.servlet;version="2.5",javax.servlet.resources;version="2.5",ja
vax.servlet.jsp.resources;version="2.5"
Bundle-Version: 2.5
Bundle-Name: Servlet Specification API
Ignore-Package: javax.servlet.http,javax.servlet,javax.servlet.resourc
es,javax.servlet.jsp.resources
Created-By: 1.5.0_13 (Sun Microsystems Inc.)
Build-Jdk: 1.5.0_13
Specification-Version: 2.5
我使用gradle
Manifest-Version: 1.0
Main-Class: MainFrame
我已经尝试将META-INF移动到资源并清理和重建工件,这是Creating Jar with Intellij 2016 - No main manifest attribute中建议的。我也知道Intellij特定的问题,它找不到清单,如果它没有移动到资源文件夹..
我也观看了几部Youtube视频,但似乎没有人修好它。
为什么group 'tasks'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'application'
mainClassName = 'MainFrame'
sourceCompatibility = 1.8
targetCompatibility = 1.8
version = '1.0'
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart',
'Implementation-Version': version,
'Main-Class': 'MainFrame'
}
}
- 属性没有正确地嵌入到jar中的Manifest中,我该如何修复它?
答案 0 :(得分:0)
我遇到了同样的问题,并且正在使用IntelliJ进行编码。在gradle上,我写了下面的代码
buildscript {
ext {
springBootVersion = '2.1.6.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
bootJar {
baseName = 'yournameforyourjar'
version = '0.1.0'
}
jar {
manifest {
attributes(
'Main-Class': 'yourpackagename.Application'
)
}
}
repositories {
mavenCentral()
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
compile group: 'org.springframework.boot', name: 'spring-boot', version: '2.1.6.RELEASE'
implementation("org.springframework.boot:spring-boot-starter-web")
//the rest of you dependencies add here
}
然后,我能够通过运行以下命令的IDE上的终端直接生成.jar:
gradlew clean build
生成的.jar文件会在您的项目文件夹中的build / libs目录中找到
干杯!