TL; DR: Почему все прекрасно работать при запуске с помощью IntelliJ, и почему она нарушается, когда вызов java -jar app.jar
. И как мне это исправить?IntelliJ бежать против запуска баночку, с Springboot Котлин, Мульти модуль Gradle проекта с социальной oauth2
Хорошо, у меня есть некоторые проблемы с бэкэнд, которые я пытаюсь выполнить докерезом. У меня есть приложение, созданное с помощью Spring Boot (1.4.2.RELEASE) после Spring Oauth (2.0.12.RELEASE) guide on their page. Я следую версии Gradle, так как предпочитаю Gradle над Maven. Также я использую Kotlin вместо Java. Все в порядке, я начинаю с IntelliJ my backend со статическим интерфейсом, я могу войти в систему через Facebook (и Google и Github), я получаю хороший Principal
, ведьма держит всю необходимую мне информацию, и я могу изменить Spring Security для авторизации и разрешения конечные точки. Все идет нормально.
Теперь плохая часть, когда я бегу либо ./gradlew clean build app:bootrun
или ./gradlew clean build app:jar
и запустить банку через java -jar
(как я буду делать в контейнере Докер), мой бэкенд приходит. Мой статический передний конец всплывает. Теперь я хочу войти через Facebook, я нахожусь на странице входа в Facebook, я ввожу свои учетные данные и ... ничего!
Я в конечном итоге вернусь на свою домашнюю страницу, не вошел в систему, никаких сообщений журнала, которые ничего для меня означают, просто тишина. Последнее, что я вижу в журнале является: Getting user info from: https://graph.facebook.com/me
Этот URL даст мне в моем браузере:
{
"error": {
"message": "An active access token must be used to query information about the current user.",
"type": "OAuthException",
"code": 2500,
"fbtrace_id": "GV/58H5f4fJ"
}
}
При переходе к этому URL через начало IntelliJ, это даст мне верительные данные. Очевидно, что-то идет не так, но я понятия не имею. Тем более, что работа от IntelliJ работает нормально. Существует некоторая разница между тем, как запускается jar и как работает конфигурация IntelliJ, но я не знаю, где искать что. Я могу опубликовать журнал трассировки или все мои файлы Gradle, но, возможно, это слишком много информации, чтобы задать один вопрос. Я буду defenitly обновлять этот вопрос, если кому-то нужно еще некоторые детали :)
Структура наброски этого проекта заключается в следующем:
root:
- api: is going to be opensourced later, contains rest definitions and DTOs.
- core: contains the meat. Also here is included in the gradle file
spring-boot-starter, -web, -security, spring-security-oauth2, and some jackson stuff.
- rest: contains versioned rest service implementations.
- app: contains angular webjars amongst others, the front end, and
my `@SpringBootApplication`, `@EnableOAuth2Client`
and the impl of `WebSecurityConfigurerAdapter`.
Почему все прекрасно работать при запуске с помощью IntelliJ, и почему она нарушена используя bootRun
или артефакт в банке. И как мне это исправить?
Когда вы запускаете Java-приложение в IntelliJ, он печатает команду, которую он использует для запуска приложения в качестве первой строки в окне «Выполнить». Трудно видеть, поскольку он всегда рушится. Это не совсем то же самое, что вы пытаетесь запустить банку, и IntelliJ будет просто использовать папки src, но вы, по крайней мере, сможете ее скопировать и сравнить с другими подходами. –