2016-06-02 2 views
0

Я получаю эту ошибку только при работе в Unix. Я имею в виду, что с таким же кодом я могу отлично работать в Windows.

Exception in thread "main" java.lang.IllegalArgumentException: Could not resolve placeholder 'CONF_DIR' in string value "file:${CONF_DIR}" 
     at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:174) 

...

PropertySource с файлом: $

@Configuration 
@ComponentScan("com… 
@EnableBatchProcessing 
@PropertySource("file:${CONF_DIR}") 
public class BatchConfig { 

...

из командной строки Windows, он работает отлично:

C:\20160601>SET CONF_DIR=C:/20160601/config.properties 
C:\20160601>java –cp my_executable_jar.jar com/my_company/main 
... no error at all since propertySource("file:$... finds the value previously settup 

От UNIX г/OS390 sh флигель, выше ошибка происходит

===> CONF_DIR=/usr/certain_path/config.properties 
===> echo $CONF_DIR 
/usr/certain_path/config.properties 
===> ./java –cp my_executable_jar.jar com/my_company/main 
... now, propertySource("file:$ will not find the value previously settup although I checked and it is there (see the echo) 

Если бы я попытался straigh внутри класса BatchConfig с

@PropertySource("file:/usr/certain_path/config.properties") 

это работает. Так что я предполагаю, что есть некоторая ошибка или непонятная от меня между java-командой «file: $» и как я устанавливаю переменную в Unix.

Я внимательно прочитал об обоих подходах и, насколько я вижу, оба правильные. Я имею в виду либо то, как я устанавливаю переменную оболочки, и как я обращаюсь к ней. Кроме того, он работает в Windows.

+1

Попробуйте вместо этого экспортировать CONF_DIR =/usr/certain_path/config.properties. – Gargoyle

+0

Горгулья, спасибо. Он исправил мою проблему. Если вы можете предоставить его в качестве ответа, я задаю правильный ответ. Я буду благодарен, если вы сможете объяснить, в чем разница между «CONF_DIR =/usr/certain_path/config.properties» и «экспортировать CONF_DIR =/usr/defin_path/config.properties». Пожалуйста, обратите внимание, что эхо показывает то же самое. –

ответ

1

export CONF_DIR=/usr/certain_path/config.properties

Если вы не используете export, это установить только в текущей среде. Если вы экспортируете его, он становится переменной окружения и наследуется подпроцессами.

Смежные вопросы