Когда мы строим WAR через Jenkins, он не может загрузить файл application.properties.WAR, созданная вручную, может загрузить файл свойств - PullRequest
0 голосов
/ 22 мая 2018

Я сталкиваюсь со странной проблемой, когда строю банку через Дженкинса.Файл WAR, созданный через Jenkins, не может загрузить файл «Application.properties».Это означает, что невозможно ввести что-либо в поле «applicationProperties» в файле «ISellGenevaCacheClient.java» - LINE 4

  • Эта проблема возникает только при построении WAR через Jenkins.
  • Если я обычно собираю WAR-файл в Eclipse (путем чистой установки maven), он может ввести значение в «ApplicationProperties» в файле «ISellGenevaCacheClient.java».

  • Мой файл "Application.properties" находится в каталоге src / main / resources

  • Ниже приведены файлы java, которые используются.

Мои ApplicationProperties.java

@Component
@ConfigurationProperties(locations   ="classpath:application.properties", ignoreUnknownFields = false , prefix="prop")
public class ApplicationProperties {

private String algorithm;

public String getAlgorithm() {
    return algorithm;
}
void setAlgorithm(String algorithm) {
    this.algorithm = algorithm;
}   
}

EncryptionUtilitiesImpl.java

public class EncryptionUtilitiesImpl {

private ApplicationProperties applicationProperties;

public EncryptionUtilitiesImpl(ApplicationProperties appProp) {    //   Constructor
    applicationProperties = appProp;        
}

public String decryptString(final String cipherTextHex) {
    byte[] key = formEncryptionKeyArray(applicationProperties.getKeyProp());     //  --->  Line 75 :  Here , we are getting the applicationProperties as NULL
    String decryptString = decryptStringFromHexWithMac(cipherTextHex,  key);   
    return decryptString;
}
}

Utility.java

public class Utility {
public String decryptValue(String encryptedValue){
    EncryptionUtilitiesImpl encryptionUtil = new EncryptionUtilitiesImpl(applicationProperties);
    return encryptionUtil.decryptString(encryptedValue);     //  --->  Line 199
}
}

CacheClient.java

public class CacheClient  {
@Inject
ApplicationProperties applicationProperties;   //. --->.  LINE 4

@Inject
Utility utility;    
public void init(){
    // -- Some code  .. . . .. 
    Utility.decryptValue(applicationProperties.getAlgorithm()))     // --->   Line 66
    // --- Some code ... . . .
}}

Я получаюниже NULL Pointer Exception, поскольку он не может внедрить какой-либо объект среды выполнения в поле applicationProperties в файле «CacheClient.java» - LINE 4.

Ниже приведена трассировка стека:

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'CacheServiceImpl': Unsatisfied dependency expressed through field 'genevaInstance': Error creating bean with name 'ISellGenevaCacheClient': Invocation of init method failed; nested exception is java.lang.NullPointerException; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'CacheClient': Invocation of init method failed; nested exception is java.lang.NullPointerException
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'CacheClient': Invocation of init method failed; nested exception is java.lang.NullPointerException
Caused by: java.lang.NullPointerException: null
at com.test.util.EncryptionUtilitiesImpl.decryptString(EncryptionUtilitiesImpl.java:75)
at com.test.util.Utility.decryptValue(Utility.java:199)
at      com.test.salesinterface.service.integration.geneva.cache.CacheClient.init(CacheClient.java:66)

Я действительно застрял здесь.Пожалуйста, помогите.

...