1. 程式人生 > >spring boot 執行 jar 或 war 提示沒有主清單屬性解決

spring boot 執行 jar 或 war 提示沒有主清單屬性解決

在將專案開發,打包 jar 或者 war 的時候, 我們可以通過 java -jar xxxx.jar/war 的命令直接執行,這個確實很方便

今天lz 就遇到了打包 jar 或者 war 通過  java -jar xxxx.jar/war 執行確提示沒有主清單屬性

在網上搜索很多都是說在 pom.xml 中新增 下面的依賴,卻沒有解決問題

<groupId>org.springframework.boot</group
<artifactId>spring-boot-maven-plugin</artifactId>

其實在通過 java -jar xxx.jar/war 之前, lz 直接將打包好的 war 放在 tomcat 中執行是可以,因為通過 tomcat 執行的時候,不需要 經過main 程式, 但是在啟動tomcat 的時候, tomcat 的控制檯卻報錯,大致原因是: tomcat  在解壓 war 的時候有檔案損壞出錯,但是並沒有影響程式執行,其實這裡報錯就是因為打包的時候,main 程式入口沒有打包進去原因

當時 lz 的pom 檔案是這樣的

<build>
		<finalName>dzj-applet</finalName>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-maven-plugin</artifactId>
        			<executions>
        				<execution>
        					<goals>
        						<goal>repackage</goal>
        					</goals>
        					<configuration>
								<srouce>${jdk.version}</srouce>
								<target>${jdk.version}</target>
								<encoed>${project.build.sourceEncoding}</encoed>
							</configuration>
        				</execution>
        			</executions>
					
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

在 pom 中 如果沒有下面兩個標籤, 在打包的時候會出錯, 但是在通過 java -jar 執行的時候就提示 沒有主清單屬性

<configuration>
	<mainClass>com.dzj.exx.main.ServletInitializer</mainClass>
</configuration>
<executions>
	<execution>
		<goals>
			<goal>repackage</goal>
		</goals>
	</execution>
</executions>

而且不論是打包jar 和 打包 war 

在target 的目錄下會有這兩個檔案

lz 一開始打包 都只有上面那個 war 所以通過 java -jar 執行的時候一直提示沒有主清單屬性,而打包和在 tomcat 中部署都沒有出錯