Применение.свойства, не обнаруженные при загрузке spring 2.5.3

#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] не может быть открыт, поскольку он не существует»