java.io.FileNotFoundException:找不到文件configuration.yml

Kar*_*jal 3 java java-ee dropwizard

我已经构建了一个类和配置文件的jar文件.configuration.yml文件位于jar的根目录中.当我尝试使用以下命令运行应用程序时:

java -jar target/drop-wizard-0.0.1-SNAPSHOT.jar server configuration.yml
Run Code Online (Sandbox Code Playgroud)

我在下面得到了例外.如何从命令提示符指定位于jar中的文件?

Exception in thread "main" java.io.FileNotFoundException: File configuration.yml not found <br>
    at io.dropwizard.configuration.FileConfigurationSourceProvider.open(FileConfigurationSourceProvider.java:14)<br>
    at io.dropwizard.configuration.ConfigurationFactory.build(ConfigurationFactory.java:75)<br>
    at io.dropwizard.cli.ConfiguredCommand.parseConfiguration(ConfiguredCommand.java:114)<br>
    at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:63)<br>
    at io.dropwizard.cli.Cli.run(Cli.java:70)<br>
    at io.dropwizard.Application.run(Application.java:72)<br>
    at com.flightnetwork.dropwizard.example.HelloWorldApplication.main(HelloWorldApplication.java:10)<br>
Run Code Online (Sandbox Code Playgroud)

v.l*_*nev 10

从Dropwizard 0.9.1版本开始,可以从类路径加载yaml文件.

只需ApplicationResourceConfigurationSourceProvider类似的方式配置:

public class MicroUsersApplication extends Application<MicroUsersConfiguration> {

    @Override
    public void initialize(Bootstrap<MicroUsersConfiguration> bootstrap) {
        bootstrap.setConfigurationSourceProvider(
            new ResourceConfigurationSourceProvider());
    }

}
Run Code Online (Sandbox Code Playgroud)

而对于configuration.ymljar的根:

java -jar target/drop-wizard-0.0.1-SNAPSHOT.jar server configuration.yml
Run Code Online (Sandbox Code Playgroud)

对于configuration.yml/com/some/configuration.yml从罐中根

java -jar target/drop-wizard-0.0.1-SNAPSHOT.jar server com/some/configuration.yml
Run Code Online (Sandbox Code Playgroud)

请注意 - /路径中没有领先者com/some/configuration.yml.看起来,这种行为将一直保持到1.1.0版本:修复#1640:ResourceConfigurationSourceProvider - 以更复杂的方式处理资源的路径.

如果你使用更新的Dropwizard版本,你可以实现自己的ResourceConfigurationSourceProvider- 它非常简单.