come può una classe Java in un Jar leggere un file di configurazione XML esterno?

ho un vaso comune che ho usato per creare il Database Connection Pool con la configurazione XML datasource ‘db2.xml’, che è sotto lo stesso percorso di questo JAR, come:

Project/
       -- lib
              -- db2.xml
              -- common.jar

seguendo il codice per leggere il db2.xml:

    private BeanFactory() {
            try {
                beanFactory = new DefaultListableBeanFactory();
                xmlReader = new XmlBeanDefinitionReader((BeanDefinitionRegistry)
                   beanFactory);
                resource = new ClassPathResource("db2.xml");
                xmlReader.loadBeanDefinitions(resource);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

sempre errore accade:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException 
parsing XML document from class path resource [db2.xml]; nested exception is 
java.io.FileNotFoundException: class path resource [db2.xml] cannot be opened 
because it does not exist

quindi deve essere causato da ‘db2.xml’ non può essere trovato. se il file di configurazione sono impostati resource = new ClassPathResource("/db2.xml") o resource = new ClassPathResource("lib/db2.xml") o resource = new ClassPathResource("../lib/db2.xml"); Non tutte le dosi non funzionano. come faccio a impostare un percorso relativo per questo.

resource = new ClassPathResource(CONFIGURATION_PATH);

questo è un progetto Java. funziona quando metto il db2.xml nel vaso comune.

EN From: How can a Java class in a Jar read a external XML configuration file?

More similar articles:

13 Comments

  1. non è possibile aggiungere singoli file al classpath (tranne i vasetti), è necessario aggiungere l’intera cartella (e se lo fate, non userei “lib”, perché questo aggiungerebbe tutti i file jar due volte).

  2. Nandkumar Tekale: vuol dire che uso un percorso assoluto come percorso di configurazione. ‘classpath: lib / db2.xml ‘= classpath +’ / lib / db2.xml ‘?

    1. perché questo vaso dovrebbe funzionare in tutti i tipi di piattaforma OS come XP, Linux, ecc. credo che questo metodo che utilizza il percorso assoluto non funzionerà.

  3. db2.xml dovrebbe essere in classpath. diteci come state eseguendo l’applicazione java. se si utilizza ide come Eclipse, aggiungere la directory lib al classpath (percorso di compilazione). se state usando il comando Java, usate il seguente comando per avere la directory lib nel classpath.

    java -cp {path to lib directory},{what ever jars you have comma seperated} mainClass

    anche per default il comando java non avrà la directory corrente nel classpath.

    1. chiamiamo classe per linea di comando, ma il lavoro di chiamare questa classe è responsabile da altri, così non posso fare nulla per l’esecuzione della riga di comando.

    2. poi o è necessario aggiungere questo file al file jar. directory lib non è in classpath, così java non sarà in grado di trovarlo. quindi si può usare path assoluto (controllare un’altra risposta che usa System.getProperty (“user.dir”)) provarla.

    3. raccomando vivamente di contattare gli altri responsabili e di modificare il comando a riga di comando per aggiungere una voce di percorso di classe
    4. grazie per voi prezioso suggerimento. le persone che sono responsabili di questo è il mio cliente, che deve preferire il modo più semplice per chiamare la nostra classe. comunque, direttamente aggiungerei il file XML nel jar.Almeno risolverà il problema.

Leave a Reply

Your email address will not be published. Required fields are marked *