Я использую Java + Spring Boot + Gradle + Docker.
Мое весеннее загрузочное приложение неожиданно начало выдавать ошибку "Не указано значение для свойства 'mainClassName'. Это работало нормально всего несколько дней назад.
Я гуглил и добавил в свой скрипт ниже:
mainClassName = 'com.test.MyMainClass'
Теперь проект успешно собран, но я получаю ошибку ниже при запуске с использованием Docker.
Exception in thread "main" java.lang.ClassNotFoundException:
com.test.MyMainClass
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Ниже мой файл докера:
FROM oraclejdk8:slim
ADD build/libs/MyTest.jar /MyTest.jar
CMD [ "java", "-jar", "/MyTest.jar" ]
Я гуглил, но не могу найти решение. Пожалуйста, помогите.
UPDATE
Я скачал банку и извлек ее. Я вижу, что он не содержит никаких классов из src / main / java. Таким образом, основная проблема заключается в том, что мои классы (которые включают в себя и основной класс) не собираются в банке.
Это странно, так как ранее тот же код работал нормально. У кого-нибудь есть указатели.
Я запустил сборку gradle на локальном компьютере (Windows), и сборка застряла в задаче bootRepackage . Ниже последний журнал:
executing actions for task ':bootRepackage'.
02:42:47.123 [INFO] [org.gradle.api.Task] Setting mainClass: com.test.MyMainClass
Building 81% : :bootRepackage
Если я отключу его тогда и запустите. Сборка завершается, и в банке содержатся мои занятия.
Должен ли я отключить эту задачу bootRepackage? Любая помощь будет высоко оценена.
Первоначальная проблема возникла во время сборки jenkins на linux.