gpt4 book ai didi

java - 从 Spring Boot jar 文件运行一个非主类

转载 作者:行者123 更新时间:2023-12-02 02:21:23 30 4
gpt4 key购买 nike

我有一个 spring boot jar 文件,里面有一个 list 文件,如下所示

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 的类文件 (打包在 jar 中的 BOOT-INF/classes 文件夹下)。我正在尝试从 Windows 机器上的命令行运行 Initiator 类,如下所示

java -cp myApp.jar com.myApp.initiate.Initiator

但运气不好。我还尝试在上面的命令中提到类路径

java -cp "myApp.jar;BOOT-INF/*"com.myApp.initiate.Initiator

但还是不行。

我做错了什么?

Initiator.java

package com.myApp.initiate.Initiator;

public class Initiator {

public static void main(String... args) {

System.out.print("hello");
}
}

更新:

Initiator 类被打包到 BOOT-INF/classes 文件夹下。当我将它复制到 jar 根目录并尝试下面的命令时它起作用了

myApp.jar
|
|--org
|--BOOT-INF
|--META-INF
|--Initiator.class
java -cp myApp.jar Initiator
hello

最佳答案

运行 Spring Boot 应用程序 jar 的标准方法是使用

java -jar myApp.jar

要运行不同的类,您需要切换到使用 org.springframework.boot.loader.PropertiesLauncher 并将 loader.main 属性添加到您的命令行选择不同的类(class)。

所以你的 list 必须包含:

Main-Class: org.springframework.boot.loader.PropertiesLauncher

然后在命令行上:

java -jar myApp.jar -Dloader.main=com.myApp.initiate.Initiator

查看文档以获取更多信息:https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-executable-jar-format.html#executable-jar-property-launcher-features

关于java - 从 Spring Boot jar 文件运行一个非主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66367374/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com