[英]Run a non main class from Spring Boot jar file
我有一個 spring 啟動 jar 文件,里面有一個清單文件,如下所示
Manifest-Version: 1.0
Implementation-Title: myApp
Implementation-Version: 0.1
Built-By: me
Implementation-Vendor-Id: com.myApp
Spring-Boot-Version: 2.0.0.RELEASE
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.myApp.smartlight.BootMongoDBApp
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Created-By: Apache Maven 3.6.1
Build-Jdk: 1.8.0_151
里面是一個名為com.myApp.initiate.Initiator
的 class 文件(打包在 jar 內的 BOOT-INF/classes 文件夾下) 。 我正在嘗試從 Windows 機器上的命令行運行啟動器 class 如下
java -cp myApp.jar com.myApp.initiate.Initiator
但沒有運氣。 我還嘗試在上面的命令中提到類路徑
java -cp "myApp.jar;BOOT-INF/*" com.myApp.initiate.Initiator
但它仍然不起作用。
我究竟做錯了什么?
發起者.java
package com.myApp.initiate.Initiator;
public class Initiator {
public static void main(String... args) {
System.out.print("hello");
}
}
更新:
Initiator
class 被打包在 BOOT-INF/classes 文件夾下。 當我在 jar 根目錄復制它並嘗試以下命令時,它起作用了
myApp.jar
|
|--org
|--BOOT-INF
|--META-INF
|--Initiator.class
java -cp myApp.jar Initiator
hello
運行 Spring 引導應用程序 jar 的標准方法是
java -jar myApp.jar
要運行不同的 class,您需要切換到使用org.springframework.boot.loader.PropertiesLauncher
並將loader.main
屬性添加到命令行以選擇不同的 class。
所以你的清單必須包含:
Main-Class: org.springframework.boot.loader.PropertiesLauncher
然后在命令行上:
java -jar myApp.jar -Dloader.main=com.myApp.initiate.Initiator
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.