我已按照this tutorial成功构建了我的Spring MVC项目mvn clean package
。
现在我尝试使用以下命令运行服务:
mvn clean package && java -jar target/gs-serving-web-content-0.1.0.jar
但是我收到了这个错误:
无法加载Main-Class清单属性 目标/ GS-服务的web内容-0.1.0.jar
我错过了什么吗?
答案 0 :(得分:124)
如果您正在使用Spring Boot,这将解决您的问题:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.2.5.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
答案 1 :(得分:18)
您可能缺少Spring Boot Maven插件。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
答案 2 :(得分:3)
您必须在pom.xml中指定它 - 这将使您的jar可执行所有依赖项(替换your.main.class
):
<!-- setup jar manifest to executable with dependencies -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>your.main.class</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
答案 3 :(得分:1)
您遗漏了maven-jar-plugin
,您需要在其中添加manifest
标记。
答案 4 :(得分:1)
对于春季启动,我在 META-INF 文件夹中创建了 MANIFEST.MF 文件。
在我的STS IDE中,我将META-INFO文件夹放在 src / main / resources 文件夹中 像这样:
MANIFEST.MF文件的内容:
Manifest-Version: 1.0
Implementation-Title: bankim
Implementation-Version: 1.5.6.RELEASE
Archiver-Version: Plexus Archiver
Built-By: Yourname
Implementation-Vendor-Id: com.bankim
Spring-Boot-Version: 1.5.6.RELEASE
Implementation-Vendor: Pivotal Software, Inc.
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.bankim.BankimApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_131
Implementation-URL: http://projects.spring.io/spring-boot/bankim/
****上面的清单是通过使用&#34; spring-boot-maven-plugin&#34;为我创建的。上面提到的&#34; Mradul Pandey&#34; (9月2日回答&#39; 15:50回答)
希望这有帮助
答案 5 :(得分:1)
检查
的顺序<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
它应该在
之上dockerfile-maven-plugin否则将重新打包
这解决了清单中没有主要属性的问题。
答案 6 :(得分:1)
for line in file.readlines():
ENTRY = copy.deepcopy(ENTRY_T)
site_type, gene, score, seq = ['','','','']
ENTRY['predictor'] = 'NNSplice'
line_elements = line.split()
if line_elements[0] == 'Donor' or line_elements[0] == 'Acceptor':
ENTRY['splice_site_type'] = line_elements[0]
ENTRY['Gene_name'] = line_elements[-2]
elif line_elements[0] == 'Start':
pass
elif int(line_elements[0]).isdigit():
ENTRY['sequence'] = line_elements[-1]
ENTRY['score'] = line_elements[-2]
elif line_elements == []:
pass
field_values = [ENTRY[i] for i in HEADERS]
print(field_values)
命令假定提供的jar是可执行。在可执行 jar中,java -jar target/gs-serving-web-content-0.1.0.jar
方法在main
文件中定义。假设您没有MANIFEST.MF
文件,则可以传递一个附加的命令行参数来指定包含MANIFEST.MF
方法的类。
像main
这样的命令将达到目的。
答案 7 :(得分:0)
我有spring-boot-maven-plugin
,但仍然遇到关于主班的错误。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
最后,我不得不使用maven-jar-plugin
并添加mainClass
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>com.org.proj.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
很高兴去!
答案 8 :(得分:0)
使用spring-boot-maven-plugin
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
并确保在pom.xml中设置property start-class
<properties>
<!-- The main class to start by executing "java -jar" -->
<start-class>org.example.DemoApplication</start-class>
</properties>
或者,可以在pom.xml的插件部分中将主类定义为spring-boot-maven-plugin的mainClass元素:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>spring-boot</classifier>
<mainClass>${start-class}</mainClass>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
答案 9 :(得分:0)
如果您的插件配置类似于我的插件(below
),请使用mvn package spring-boot:repackage
。
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
学习愉快。
答案 10 :(得分:0)
您需要在 MANIFEST.MF 文件中设置主类:
Main-Class: com.example.MainClassApplication