Я использую install4j для комплектации моего Java приложения. Так как install4j содержит свой собственный API, я добавил его как зависимость 'compileOnly' в build.gradle
compileOnly(files("${project.projectDir}/lib/i4jruntime.jar"))
Когда я запускаю задачу gradle run
, приложение запускается, как и ожидалось. Поэтому я предполагаю, что задача run
включает зависимости compileOnly в classpath.
Однако, когда я использую конфигурацию IntelliJ Run для запуска моего основного класса, она завершается неудачей с ClassNotFoundException:
java.lang.ClassNotFoundException: com.install4j.api.launcher.SplashScreen$ConnectionException
It Мне казалось очевидным, что я должен был проверить «Включить зависимости с« Предоставленной »областью действия» в Конфигурацию запуска, однако выполнение все равно не выполняется.
Удивительно, что Конфигурация запуска завершается неудачно, только когда я делегирую задачи сборки и запуска » Gradle. Если я выберу «IntelliJ IDEA» в настройках «Построить и запустить с помощью», конфигурация запуска будет работать как положено.
Пример проекта можно найти на GitHub . Я запускаю IntelliJ 2019.3.4
на Windows и с OpenJDK 11.0.1
Это ошибка в IDE или я что-то упускаю?
Я нашел маленькие маленькие строки в мой build.gradle , который делает задачу run
работающей, что теперь имеет для меня смысл:
tasks.run {
classpath = configurations.compileClasspath + sourceSets.main.output
}
Однако я все еще думаю, что проверка Включение зависимостей с помощью «Предоставлено» scope должен заставить работать конфигурацию IntelliJ. По крайней мере, это мое ожидание как пользователя.