2

我正在使用 Spring Boot 应用程序,在使用 maven 构建项目后,我可以看到我的应用程序的 jar 文件,并保持以下文件夹结构

在此处输入图像描述

buddika@buddika-pc:~/Desktop/visitor-tracking-automation-api-server/bin$ ll /home/buddika/Desktop/api-0.0.1-SNAPSHOT/
total 32
drwxrwxr-x  6 buddika buddika  4096 Sep 18 22:51 ./
drwxr-xr-x 33 buddika buddika 12288 Sep 18 23:14 ../
drwxr-xr-x  4 buddika buddika  4096 Sep 18 22:08 BOOT-INF/
drwxr-xr-x  3 buddika buddika  4096 Sep 18 22:08 META-INF/
drwxr-xr-x  3 buddika buddika  4096 Sep 18 22:08 org/

但问题出在 tanuki 包装纸上。它没有识别这个(BOOT-INF/classes/com/visitor/tracking/automation/api/boot/APIServerStart)文件夹结构。

在此处输入图像描述

而不是在jar的文件夹结构之上,它期望以下文件夹结构。我手动将“com”文件夹从 BOOT-INF 带到了前面。那个时间包装器是识别主类并工作

在此处输入图像描述

buddika@buddika-pc:~/Desktop/visitor-tracking-automation-api-server/bin$ ll /home/buddika/Desktop/api-0.0.1-SNAPSHOT/
total 32
drwxrwxr-x  6 buddika buddika  4096 Sep 18 22:51 ./
drwxr-xr-x 33 buddika buddika 12288 Sep 18 23:14 ../
drwxr-xr-x  4 buddika buddika  4096 Sep 18 22:08 BOOT-INF/
drwxr-xr-x  3 buddika buddika  4096 Sep 18 22:08 com/
drwxr-xr-x  3 buddika buddika  4096 Sep 18 22:08 META-INF/
drwxr-xr-x  3 buddika buddika  4096 Sep 18 22:08 org/

我的问题是如何在不手动将“com”包放在前面的情况下配置这个主类路径。

有没有办法通过将“com”包放在前面而不放入“BOOT-INF”来制作罐子

wrapper.conf 文件中使用了以下配置

wrapper.java.command=java
wrapper.working.dir=..
wrapper.java.mainclass=com.visitor.tracking.automation.api.boot.APIServerStarter
set.default.REPO_DIR=lib
set.default.APP_BASE=.
4

1 回答 1

0

对我有用的是将 Main 类设置为org.springframework.boot.loader.JarLauncher而不是我的应用程序的 Main 类。

文档JarLauncher说:

基于 JAR 的档案的启动器。此启动器假定依赖项 jar 包含在 /BOOT-INF/lib 目录中,并且应用程序类包含在 /BOOT-INF/classes 目录中。

这样,您不必将包移动到 jar 的根目录 - 屏幕截图中显示的“org”文件夹应该已经具有JarLauncher.

于 2022-02-02T21:52:51.463 回答