#java #spring #spring-boot #gradle #spring-boot-2
Вопрос:
Я перенес свой проект с gradle 5 на 7.1 и spring boot 2.5.3. После сборки jar я попытался выполнить то же самое. Раньше это работало нормально. Но теперь он не обнаруживает файл application.properties. Я перепробовал много решений в Stackoverflow и других веб-сайтах, но это мне не помогло. Было бы очень полезно, если бы кто-нибудь указал на мою ошибку. Пытаюсь выполнить на машине с Windows. файл application.properties находится в папке конфигурации, которая параллельна jar
Попытка 1:
java -Dloader.path=.,config -jar xyz-1.0.0.jar
ошибка :
class path resource [application.properties] cannot be opened because it does not exist
Попытка 2:
java -Dspring.config.location=classpath:/application.properties -jar xyz-1.0.0.jar
ошибка :
ConfigDataResourceNotFoundException: Config data resource 'class path resource [application.properties]' via location 'classpath:/application.properties' cannot be found
Попытка 3:
java -jar xyz-1.0.0.jar -Dspring.config.location=classpath:/application.properties
ошибка :
FileNotFoundException: class path resource [application.properties] cannot be opened because it does not exist
Попытка 4:
java -Dspring.config.location=file:c:Sheljithtoolsconfigapplication.properties -jar xyz-1.0.0.jar
ошибка :
FileNotFoundException: class path resource [application.properties] cannot be opened because it does not exist
Попытка 5:
java --spring.config.location=file:c:Sheljithtoolsconfigapplication.properties -jar xyz-1.0.0.jar
ошибка :
Unrecognized option: --spring.config.location=file:c:Sheljithtoolsconfigapplication.properties
Attempt 6:
java -Dspring.config.name=application -Dspring.config.location=file:///C:/Sheljith/tools/drc-reports-generator/config/ -jar xyz-1.0.0.jar
error:
.FileNotFoundException: class path resource [application.properties] cannot be opened because it does not exist
Попытка 7:
java -Dspring.config.location=file:///C:/Sheljith/tools/config/application.properties -jar xyz-1.0.0.jar
ошибка:
class path resource [application.properties] cannot be opened because it does not exist
сборка.сортировка
buildscript {
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin")
}
}
plugins {
id 'org.springframework.boot' version '2.5.3'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
jar.archiveName = "drc-reports-generator.jar"
version = '1.0.0'
sourceCompatibility = '1.8'
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart',
'Implementation-Version': version
}
}
repositories {
mavenCentral()
mavenLocal()
}
processResources{
exclude '*/**'
}
springBoot{
mainClass = "com.xyz.Application"
}
dependencies {
implementation group: 'commons-collections', name: 'commons-collections', version: '3.2'
implementation("org.springframework.boot:spring-boot-starter")
implementation 'com.googlecode.json-simple:json-simple:1.1.1'
testImplementation("org.springframework.boot:spring-boot-starter-test")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
testImplementation group: 'junit', name: 'junit', version: '4. '
testImplementation group: 'com.tngtech.java', name: 'junit-dataprovider', version: '1.13.1'
implementation 'com.itextpdf:itextpdf:5.5.11'
implementation 'org.springframework:spring-web:4.3.6.RELEASE'
implementation 'com.microsoft.sqlserver:sqljdbc4:4.0'
implementation("com.h2database:h2")
implementation("org.apache.commons:commons-lang3:3.0")
implementation group: 'com.github.ulisesbocchio', name: 'jasypt-spring-boot-starter', version: '3.0.0'
}
test {
useJUnitPlatform()
}
Комментарии:
1. Можете ли вы поделиться pom.xml связанные с этим изменения, которые вы внесли в рамках своей миграции?
2. можете ли вы попробовать приложение. файл yml для хранения конфигураций вашего проекта?
3. @vaibhavsahu, я использую gradle, добавил свой build.gradle к вопросу
4. @vaibhavsahu Спасибо за быстрый ответ. мы следим за .properties во всех инструментах. Мы можем изменить его только в качестве последнего варианта.
5. Если он параллелен (так что рядом с вашим файлом jar), вам ничего не нужно делать, так как это стандартное местоположение , уже отсканированное Spring Boot. Несвязанные, но источник неприятностей вы смешиваете банки из разных версий Spring. Spring web 4.x не совместим с Spring Boot 2.5 (удалите версию, чтобы включить правильную).
Ответ №1:
Так как файл application.properties расположен параллельно файлу jar. попробуйте это:
java -jar xyz-1.0.0.jar --spring.config.location=application.properties
Редактировать:
Можешь ли ты попробовать это один раз:
java -Dspring.config.additional-location=application.properties -jar xyz-1.0.0.jar
измените существующие ресурсы процессов на следующие:
// Исключить все ресурсы из jar
jar {
processResources.exclude('*')
}
Комментарии:
1. на самом деле папка конфигурации параллельна jar, а папка конфигурации содержала application.properties. Но для проверки этого я скопировал свойства в ту же папку, что и у jar, и попробовал. Но результат тот же. «Исключение FileNotFoundException: ресурс пути к классу [application.properties] не может быть открыт, поскольку он не существует»