Jarlauncher не был найден при использовании режима весенних загрузочных инструментов

Я извлек файл сборки моего приложения, используя режим layertools jar. (ссылка https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#container-images.dockerfiles)

В результате четыре файла были извлечены следующим образом.

application
dependencies
snapshot-dependencies
spring-boot-loader

Затем в том же каталоге я попытался запустить приложение, выполнив следующую команду:

$java org.springframework.boot.loader.JarLauncher

Однако произошла ошибка.

java.lang.ClassNotFoundException: org.springframework.boot.loader.JarLauncher

MANIFEST.MF заключается в следующем.

Manifest-Version: 1.0
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.henry.myproject.HelloApplicationKt
Spring-Boot-Version: 2.6.4
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Spring-Boot-Layers-Index: BOOT-INF/layers.idx

Почему возникает эта ошибка?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Каждый из четырех каталогов предназначен для использования в качестве отдельного слоя в образе Docker. Их нужно скопировать в один каталог. В Dockerfile это будет выглядеть так:

COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/application/ ./

Затем приложение можно запустить из каталога, в который были скопированы слои.

Я хочу запустить его на локальном хосте, прежде чем применять его к докеру. Четыре каталога (dependencise, spring-boot-loader..) уже находятся в одном каталоге. Проблема в том, что программа запуска jar не может быть найдена и запущена.

henry-jo 28.03.2022 11:56

Четыре каталога — это четыре отдельных каталога. Содержимое четырех каталогов необходимо объединить в один каталог. Это то, что делают приведенные выше команды копирования при создании образа Docker. Если вы хотите запустить его на локальном компьютере, вам придется сделать то же самое и там.

Andy Wilkinson 28.03.2022 13:38

Я не объединял содержимое четырех каталогов в один каталог. При объединении в один каталог работает нормально. Спасибо за вашу помощь !

henry-jo 29.03.2022 07:56

Другие вопросы по теме

Похожие вопросы

Оператор Java if дает мне исключение NullPointerException в операторе if
Как получить CMS (PKCS#7) от PKCS#1 Zeal id интеграции
Удалите совпадающие значения из пользовательского ArrayList, используя другой String ArrayList, используя один цикл, который используется для добавления значений в sqlite
MIDI в Java. Попытка получить непрерывные данные контроллера из нескольких CC, но удалось получить только 1
Я не понимаю объяснения в поиске прокрутки elasticsearch
Файл не найден при чтении файла, созданного во время выполнения, в качестве ресурса
Как я могу создать эффект силового поля на игроке?
Загрузка файла конфигурации log4j2.xml или свойств во время выполнения с указанием пути
Нужно ли всегда создавать модель представления для выполнения простого запроса или я могу получить доступ к базе данных из своего репозитория?
Как передать «параметры по ссылке» для int и float на Java