externe Properties datei aus Jar File heraus lesen

Status des Themas:
Es sind keine weiteren Antworten möglich.

Diskutiere externe Properties datei aus Jar File heraus lesen im Allgemeine Java-Themen Forum; Hallo, ich würde gern aus einem Jar File eine externe Properties Datei einlesen. Wenn die Datei im jar File liegt klappt alles. Aus Eclipse...

  1. Guest
    Guest Guest
    Hallo,

    ich würde gern aus einem Jar File eine externe Properties Datei einlesen. Wenn die Datei im jar File liegt klappt alles. Aus Eclipse lässt sich das Programm auch starten. Wenn ich allerdings die properties ausserhalb des Jars platziere, bekomme ich eine NullPointerException.

    Ich gebe im Programm des absoluten Pfad zur Datei an: C:/Dokumente und Einstellungen/.....

    Muss ich die Datei zusätzlich noch irgenwo einbinden, damit es funktioniert ?

    Wie gestaltet sich eine Einbindung ?



    VG
     
  2. Vielleicht hilft dir das kostenlose Training weiter --> (hier klicken)
  3. diggaa1984
    diggaa1984 Aktives Mitglied
  4. Gast
    Gast Guest
    Ja im Prinzip schon. Jedoch funktioniert es ja bei mir im Eclipse und auch wenn die properties im Jar File liegt. ich denke, es muss auch anders funktionieren, ohne, dass ich meinen Code noch einmal anpassen muss.

    Ich muss dem Jar File doch nur sagen, welche datei eingebunden werden soll.

    oder sehe ich das falsch ?
     
  5. diggaa1984
    diggaa1984 Aktives Mitglied
    hm na absolute angaben sind eh immer kritisch ... aber die datei liegt quasi nicht im selben ordner wie die jar, sondern irgendwo anders!?
     
  6. Gast
    Gast Guest
    Ich habe ein Verzeichnis auf meinem Desktop mit dem namen Export. Hierin befindet sich die Jar mit allen Libraries und die config.properties. Leider wird diese dann nicht gefunden.
     
  7. diggaa1984
    diggaa1984 Aktives Mitglied
    mit dem einbinden is immer sone sache, da stolper ich auch nochmanchmal über diverse steine :D
     
  8. Gast2
    Gast2 Guest
    wenn Du eine NPE bekommst, dann verarbeitest Du einen Fehler der beim Öffnen der properties_Datei auftritt falsch ... das muss noch nicht mal was mit dem Pfad zu tun haben

    aber ohne Quellcode kann man nur orakeln

    hand, mogel
     
  9. diggaa1984
    diggaa1984 Aktives Mitglied
    lässt aber trotzdem darauf schliessen, das er die datei in dem moment nicht finden kann .. was er ja aber unbedingt möchte :D
     
  10. Gast
    Gast Guest
    Vielen Dank für die Unterstützung...

    Ja, er findet die datei nicht. das steht zu 100% fest. meine Frage ist eigentlich ganz einfach: Was muss ich tun, um eine externe properties datei in mein Jar File einzubinden?

    Muss ich hier vielleicht den Classpath in der Mainifest datei eintragen?
     
  11. Gast2
    Gast2 Guest
    nein - Du bekommst eine NullPointerException und keine FileNotFoundException ... kläre erstmal warum Du die NPE bekommst ... Du kannst jede Datei normal außerhalb einer JAR als Stream öffnen ... das ist keine Hexerei

    Code (Text):
    BufferedReader br = new BufferedReader(new FileReader("data/" + name + ".txt"));
    hier befindet sich die Datei (relativ) in einem Unterverzeichnis von der JAR-Datei

    Code (Text):
    BufferedReader br = new BufferedReader(new FileReader("c:/Dokumente und Einstellungen/$WHATEVER/data/" + name + ".txt"));
    und nun absolut zur jeder beliebigen Datei

    selbst wenn FileReader die Datei nicht findet kommt eine FileNotFoundException!



    kläre die NullPointerException und dann kannst Du nochmal behaupten kommen

    hand, mogel
     
  12. Guest
    Guest Guest
    Hier einmal meine Fehlermeldung:

    Code (Text):


    java.lang.NullPointerException
            at java.util.Properties$LineReader.readLine(Unknown Source)
            at java.util.Properties.load0(Unknown Source)
            at java.util.Properties.load(Unknown Source)
            at dao.Sysproperties.loadProps(Sysproperties.java:103)
            at dao.Sysproperties.<init>(Sysproperties.java:51)
            at dao.Sysproperties.getInstance(Sysproperties.java:65)
            at dao.StoryDAO.<init>(StoryDAO.java:39)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

            at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
    rce)
            at java.lang.reflect.Constructor.newInstance(Unknown Source)
            at java.lang.Class.newInstance0(Unknown Source)
            at java.lang.Class.newInstance(Unknown Source)
            at dao.DAOFActory.getDAO(DAOFActory.java:36)
            at controller.StoryController.<init>(StoryController.java:33)
            at export.Export.main(Export.java:29)
    Exception in thread "main" java.lang.NullPointerException
            at java.util.Properties$LineReader.readLine(Unknown Source)
            at java.util.Properties.load0(Unknown Source)
            at java.util.Properties.load(Unknown Source)
            at dao.Sysproperties.loadProps(Sysproperties.java:103)
            at dao.Sysproperties.<init>(Sysproperties.java:51)
            at dao.Sysproperties.getInstance(Sysproperties.java:65)
            at export.XMLCreator.<init>(XMLCreator.java:29)
            at export.Export.main(Export.java:30)
     

    mein Code:

    Code (Text):


    public class Sysproperties {

        public final static String PROPERTY_NAME = "C:/dokumente und einstellungen/All Users/Desptop/Exporter/config.properties";


        //Statisches Object speichert eine Instanz der eigenen Klasse
        static Object instance;

        // Properties Object
        static Properties properties;



        final String config;


        /**
         * Instanziiert ein Properties-Objekt und stößt den Ladevorgang an.
         * @param config  Dateiname der Konfigurationsdatei
         */
        public Sysproperties(String config){

            properties = new Properties();
            this.config = config;

            //Properties Datei laden
            loadProps();

        }


        /**
         * Gibt GENAU eine Instanz dieser Klasse zurück.
         * Sysproperties ist so ein Singleton.
         *
         * @return Instanz der Klasse
         */
        public static Sysproperties getInstance(String config) {

            if (instance == null) {
                instance = new Sysproperties(config);
            }
            return (Sysproperties) instance;
        }


        /**
         * Hier werden alle Einstellungen aus der Konfigurationsdatei
         * in das Properties-Objekt geladen.
         */
        @SuppressWarnings("unused")
        private boolean loadProperties() {

            boolean data = false;

            try {
                properties.load(new FileInputStream(config));
                data = true;
            } catch (final FileNotFoundException e) {
                System.out.println("Config File konnte nicht gefunden weren oder existiert nicht.");
                data = false;
                e.printStackTrace();
            } catch (final IOException e) {
                System.out.println("Es ist ein Fehler beim Lesen der Config Datei aufgetreten.");
                data = false;
                e.printStackTrace();
            }

            return data;

        }// end of load Properties
       
       
        private boolean loadProps() {

            boolean data = false;
            try
            {
                properties.load(getClass().getClassLoader().getResourceAsStream("config.properties"));
                data = true;
            }
            catch (IOException e)
            {
                //logger.error("Cannot locate axis.properties file", e);
                data = false;
            }

           

            return data;

        }// end of load Properties



        /**
         * Gibt einen bestimmten Konfigurationsparameter zurück.
         * @param aPropertyName Name des Parameters
         * @return Wert des Parameters
         */
        public String getPropertyValue(String aPropertyName)
        {

            return properties.getProperty(aPropertyName);

        }


    public void setPropertyValue(String value, String aPropertyName){
       
        properties.setProperty(aPropertyName,value );
           
         try {
             properties.store(new FileOutputStream("config.properties"), null);
            } catch (IOException e) {
                System.out.println("Konnte den Wert in der config.properties nicht ändern!");
            }

           
        }


    }// end of class

     
    Ich nutze derzeit die >Funktion loadProps() zum Laden der Properties Datei...
     
  13. Gast
    Gast Guest
    Ja jetzt sehe ich es selbst, merde :)

    properties.load(getClass().getClassLoader().getResourceAsStream("config.properties"));

    ist quark...

    Da muss natürlich PROPERTY_NAME rein :)
    Ich hoffe, das is es ...
     
  14. mvitz
    mvitz Aktives Mitglied
    Über den Klassloader hilft es sonst auch die Datei in den Classpath aufzunehmen und nur über den Namen zu referenzieren.
     
  15. Schau dir jetzt hier den Kurs an und lerne Java zu programmieren: --> Hier klicken, um mehr zu erfahren (Klick)
Die Seite wird geladen...

externe Properties datei aus Jar File heraus lesen - Ähnliche Themen

Externe Variablen in Run Methoden verändern
Externe Variablen in Run Methoden verändern im Forum Allgemeine Java-Themen
fremde/externe Bibliothek einbinden
fremde/externe Bibliothek einbinden im Forum IDEs und Tools
Externer Quellcode
Externer Quellcode im Forum Allgemeine Java-Themen
jvm exception abfangen und an externes Programm schicken
jvm exception abfangen und an externes Programm schicken im Forum Allgemeine Java-Themen
JTable Externe Lib
JTable Externe Lib im Forum Allgemeine Java-Themen
Status des Themas:
Es sind keine weiteren Antworten möglich.
Thema: externe Properties datei aus Jar File heraus lesen