Hallo Ich arbeite an einem Maven-Projekt mit Abhängigkeit von einem externen jar, das eine Klasse ConfigLoader
mit folgenden loader()
Methode hat.Eine Klasse von externem jar löst Ausnahme beim Laden von Ressource
public class ConfigLoader {
public void initialize() {
loader();
}
private static void loader() {
URL configURL = ConfigLoader.getClass().getResource("runtimeConfiguration.xml");
//some other method calls to which configURL is an argument.
}
//other methods of ConfigLoader class
}
und die Verzeichnisstruktur wie das ist -
src
|...main
|.......java
|.......resources
|................dev
|................prod
beide dev und prod haben eine Datei runtimeConfiguration.xml und der Code genannt, die diese Klasse verwendet, ist
public class Application {
private Application application;
public static void main(String []args){
application = new Application();
application.invokeConfigLoader();
//additional code
}
private void invokeConfigLoader() {
configLoader.initialize();
}
}
Der Fehler, den ich bekomme, ist
could not find: runtimeConfiguration.xml
and the exception is thrown at the getResource() line in the class from jar.
Ich habe versucht, den dev-Ordner zu Klassenpfad hinzuzufügen, aber immer noch den gleichen Fehler. Ich möchte diesen Code von Linux-Terminal laufen, und der Befehl, den ich aus Stamm-Verzeichnis gebe (wo alle meine exernal Krüge und Ressourcenordner nach Maven Build sitzt) ist -
java -cp /resources/dev/*:configuration-loader.jar
Ich benutze IntelliJ 2017,2 und auch versucht, um den Ordner resources/dev als Modulabhängigkeit hinzuzufügen, aber ich bekomme immer den gleichen Fehler. Der Ressourcenordner wird über Projektstruktureinstellungen als Bibliothek hinzugefügt. Ich habe versucht, viel zu suchen, habe aber keine Frage mit diesem Problem gefunden. Bitte helfen Sie mir, denn ich bin neu in dieser umweltbasierten Entwicklung. Danke!
danke für die antwort. Der Code, der diese getResource aufruft, kommt von einem externen Jar, so dass ich dort keine Änderungen vornehmen kann. – humblecoder
Versuchen Sie dann, die Datei unter dem Pfad zu platzieren, der dem Paketnamen von 'ConfigLoader' entspricht. Wenn zum Beispiel "ConfigLoader" unter "com.yourcompant.config" steht, dann setze "runtimeConfiguration.xml" in das Verzeichnis "com/yopurcompany/config". – tsolakp
eine Abfrage, die ich habe, wenn die Konfiguration in 'src/main/java/com/yourcomapany/config' sitzt und die 'runtimeConfiguration.xml' in' src/main/java/resources' sitzt, wo das 'resources'-Verzeichnis ist markiert als Ressourcen root. Dann sollte es funktionieren? – humblecoder