MyWebConfiguration.java Есть следующий код, как мастера падения описаноIssue в наиважнейшей конфигурации с ENV переменных в dropwizard
public void initialize(Bootstrap<MyWebConfiguration> bootstrap) {
LOG.info("Initializing configuration");
// Enable variable substitution with environment variables
bootstrap.setConfigurationSourceProvider(
new SubstitutingSourceProvider(
bootstrap.getConfigurationSourceProvider(),
new EnvironmentVariableSubstitutor(false)
)
);
}
DEV-services.yaml файл имеет
tokenSecret: ${TOKEN_SECRET}
но при запуске приложения и отлаживать, чтобы проверить, какое значение я получаю для tokenSecret, он показывает мне tokenSecret = "$ {TOKEN_SECRET}" в консоли отладки.
Я попытался изменить MyWebConfiguration.java следующим образом: -
bootstrap.setConfigurationSourceProvider(
new SubstitutingSourceProvider(
bootstrap.getConfigurationSourceProvider(),
new EnvironmentVariableSubstitutor(true)// changed false to true
)
);
Но теперь, когда я пытаюсь запустить программу, она показывает мне следующее сообщение об ошибке
Exception in thread "main" io.dropwizard.configuration.UndefinedEnvironmentVariableException: The environment variable 'TOKEN_SECRET' is not defined; could not substitute the expression '${TOKEN_SECRET}'.
at io.dropwizard.configuration.EnvironmentVariableLookup.lookup(EnvironmentVariableLookup.java:41)
at org.apache.commons.lang3.text.StrSubstitutor.resolveVariable(StrSubstitutor.java:726)
at org.apache.commons.lang3.text.StrSubstitutor.substitute(StrSubstitutor.java:649)
at org.apache.commons.lang3.text.StrSubstitutor.substitute(StrSubstitutor.java:563)
at org.apache.commons.lang3.text.StrSubstitutor.replace(StrSubstitutor.java:305)
at io.dropwizard.configuration.SubstitutingSourceProvider.open(SubstitutingSourceProvider.java:39)
at io.dropwizard.configuration.YamlConfigurationFactory.build(YamlConfigurationFactory.java:80)
at io.dropwizard.cli.ConfiguredCommand.parseConfiguration(ConfiguredCommand.java:124)
at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:72)
at io.dropwizard.cli.Cli.run(Cli.java:75)
at io.dropwizard.Application.run(Application.java:79)
Может кто-нибудь сказать мне, где я возможно, пошло не так?
Где вы устанавливаете фактическую переменную env. В своем классе напишите main и выполните: System.out.println (System.getenv («TOKEN_SECRET»)); и посмотреть, не выводится ли выход. Вы работаете в затмении? – pandaadb
Да, я запускаю его в затмении. Если я запускаю его через терминал, он работает. –
Ваша среда eclipse не знает о ваших переменных env. Вам нужно зайти в вашу конфигурацию запуска и установить там переменные – pandaadb