当前位置: 首页 > 知识库问答 >
问题:

从Spring Boot jar文件运行非主类

西门威
2023-03-14

我有一个Spring引导罐文件,里面有一个清单文件,如下所示

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

java-cp myApp。jar com。我的应用。发起发起人

但运气不好。我还尝试在上面的命令中提到classpath作为

java-cp“myApp.jar;BOOT-INF/*”com。我的应用。发起发起人

但它仍然不起作用。

我做错了什么?

发起者。JAVA

package com.myApp.initiate.Initiator;

public class Initiator {

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

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

更新:

启动器类被打包在BOOT-INF/class文件夹下。当我在jar根目录下复制它并尝试下面的命令时,它起作用了

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

共有1个答案

闻人越
2023-03-14

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

java -jar myApp.jar

要运行另一个类,您需要切换到使用org。springframework。靴子加载器。PropertiesLauncher并添加加载程序。将main属性添加到命令行以选择其他类。

所以你的清单必须包含:

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属性启动器特性

 类似资料:
  • 问题内容: 这是简单的go应用程序。如果运行以下代码,则会出现“运行:无法运行非主程序包”错误。 要解决此问题,我只需要将该包命名为即可。但是我不明白为什么我需要这样做。我应该能够随心所欲地命名包裹。 另一个问题,我知道主要功能是程序的入口点,您需要它。否则它将无法正常工作。但是我看到一些没有主要功能的代码仍然可以使用。 单击此链接,页面底部的示例未使用包main和main函数,它仍然有效。只是好

  • 问题内容: 我正在尝试使用celery和redis队列来为我的Django应用执行任务。Supervisord通过安装在主机上,而celery驻留在我系统上的特定虚拟环境中,通过`pip安装。 结果,我似乎无法通过supervisor运行命令。如果我从virtualenv内部运行它,则在外部运行良好,但不能正常运行。如何使其在当前设置下运行?解决方案是否只是通过apt- get而不是在virtua

  • 问题内容: 我正在尝试从Java代码执行.py文件。我将.py文件移动到Java项目的默认目录中,并使用以下代码对其进行调用: 使用变量run或整个路径或“ python file.py”,我的代码正在运行,显示消息构建成功总时间为0秒,而没有执行file.py。我这是什么问题 问题答案: 您也可以这样使用: 要么 从Java运行Python脚本

  • 我正在为日志创建一个Spring Bootjar。我在我的主要spring boot项目中添加了这个依赖项。我可以在主项目的控制台中获取日志。但是没有登录到文件中。 我在文件中添加了以下application.yml 谁能帮我一下吗。提前谢谢!

  • 我试图从控制台运行一个jar文件: 我得到了错误: 无法执行jar文件:“无主清单属性” 正如你所见,我实际上有一个主文件,它在eclipse中运行良好: 我需要做什么才能从命令行成功运行这个文件?