java.io.FileNotFoundException: Datei-Konfiguration.yml nicht gefunden
Ich habe build eine jar-Datei von Klassen und Konfigurationsdateien. Die Konfiguration.yml-Datei befindet sich im root der jar. Wenn ich versuche, führen Sie die Anwendung mithilfe des folgenden Befehls:
java -jar target/drop-wizard-0.0.1-SNAPSHOT.jar server configuration.yml
Bekomme ich die exception weiter unten. Wie kann ich angeben, die Datei befindet sich im jar von der Eingabeaufforderung aus?
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>
- Erste, was ich zu tun ist, überprüfen Sie die Dateiendung, da Sie ausgeblendet sind daher verwirrend. Könnte es sein configuration.yml.txt. Beste Weg, um zu überprüfen es auf Eingabeaufforderung
- Ich habe überprüfen Sie die Erweiterung der Datei sein .yml.
- Wenn Sie nicht, Ihr Problem gelöst, schauen Sie sich bitte mein edit, wie könnten Sie tun, um die Datei zu laden, die von innen das Glas.
Du musst angemeldet sein, um einen Kommentar abzugeben.
configuration.yml
ist davon auszugehen, dass die Arbeits-Verzeichnis, d.h. auf das Dateisystem, denn dies ist, wie Sie versuchen, es zu Lesen. Wenn Sie möchten, es zu Lesen aus der jar-Datei oder aus dem classpath im Allgemeinen müssen Sie getResource oder getResourceAstream Methoden. (sehen Sie sich bitte die ähnlichen Frage und Antwort)EIDT
Wenn Sie möchten, Lesen Sie die Konfiguration von einer Ressource innerhalb Ihrer jar, dann möchten Sie vielleicht, um zu konfigurieren Sie Ihre Anwendung mit UrlConfigurationSourceProvider statt FileConfigurationSourceProvider übergeben und URL die Sie erhalten können, von getResource, die öffnen - Methode der zugrunde liegenden Schnittstelle erwartet eine
String
als parameter, so müssen Sie URL#toString auf das Ergebnis getResource.Ist es möglich, laden Sie eine yaml-Datei von einer Klasse Weg, da Dropwizard 0.9.1 version.
Einfach konfigurieren
Application
mitResourceConfigurationSourceProvider
ähnlich:Und für
configuration.yml
im root der jar:Für
configuration.yml
im/com/some/configuration.yml
von der jar-rootBitte beachten Sie — es ist nicht eine führende
/
im Pfadcom/some/configuration.yml
. Aussieht wie, dieses Verhalten wird behalten, bis 1.1.0 release: Update #1640: ResourceConfigurationSourceProvider - Prozess einen Pfad zu der Ressource, in der mehr anspruchsvolle Art und Weise.Wenn du mehr die jüngsten Dropwizard-version, können Sie implementieren Ihre eigenen
ResourceConfigurationSourceProvider
— es ist ziemlich einfach.Versuchen, ausführen des Befehls mit absoluten Pfaden statt, offenbar Konfiguration.yml ist nicht in der run-Ordner.
Beispiel, wenn
configuration.yml
ist in/tmp
Ich glaube nicht, dass es möglich ist, zu füttern dropwizard eine yml-Datei innerhalb der jar. Es muss auf die Datei system, soweit ich weiß. UPDATE: wie es aussieht ist es möglich, aber ich bin verlassen, es ist immer noch eine Lösung.
Wenn Sie nicht wollen, zu entlarven details zur Konfiguration nach außen, dann müssen Sie es konfigurieren mit dem Configuration-Klasse, die Standard-Einstellung der Werte in den Konstruktor. Es wird ziemlich hässlich, aber da es so verschachtelt ist. Ich weiß nicht, wie dropwizard erzwingt die yml Abhängigkeit selbst.
Beispiel ich für meine tests: