2016-04-26 7 views
1

Ich habe Ressourcen in meinem Java-Projekt unter Ressourcen-Ordner. Wenn ich die folgende Methode [2] benutze, um die Ressource zu laden, arbeitet sie. Aber wenn ich meinen Krieg in wildfly 9.x einsetze, kann ich die file.avsc Datei nicht finden. Es gibt den Klassenpfad als [1]; Wie kann ich Ressourcendateien in Jboss War laden?So laden Sie Ressourcen-Dateien in jboss Krieg - wildfly9.xV

[1]

java.io.FileNotFoundException: /content/ratha.war/WEB-INF/lib/core-0.0.1-SNAPSHOT.jar/avro_schemas/file.avsc (Keine solche Datei oder das Verzeichnis)

[2]

ClassLoader classLoader = getClass().getClassLoader(); 

    ClassLoader classLoader = this.getClass().getClassLoader(); 

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 

    File file = new File(classLoader.getResource("avro_schemas/file.avsc").getFile()); 

Antwort

1

Versuchen Sie, die Class.getResourceAsStream() Methode:

this.getClass().getResourceAsStream("avro_schemas/file.avsc"); 

Sie müssen vielleicht etwas mit dem Pfad basteln. Hier ist die formelle Dokumentation, wie der Pfad aufgebaut werden sollte: Class.getResourceAsStream

Das Problem wird sein, wie Jboss seine ClassLoader-Struktur erstellt. Sie müssen den Pfad so konstruieren, dass er mit der Darstellung der Klasse im ClassLoader-Klassenpfad übereinstimmt.

Andere gute Beschreibungen hierfür finden sie hier: How to read a file from jar in Java? und hier: How can I read a resource file in an unexploded war file deployed in Tomcat?

Wo es schlägt vor, sollten Sie einen führenden „/“ haben den Pfad zur Datei zu starten.

+0

Danke das funktioniert .. – Ratha