Announcement

Collapse
No announcement yet.

externe Property - Datei

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • externe Property - Datei

    Hallo,

    habe eine Java-Anwendung mit einer internen Property-Datei ( Property-Datei befindet sich in der Verzeichnisstruktur von Eclipse ( "src/name.properties")

    Es handelt sich um eine ausführbare JAR-Datei die ich aus Eclipse heraus generiert habe in der auch die Property-Datei sich befindet und zugegriffen wird.

    - Funktioniert einwandfrei.

    Jetzt soll daraus aber eine externe Config-Datei werden um bei Bedarf den Server-Pfad unkompliziert sofort ändern zu können.

    Habe im Code, da wo ich die Begrifflichkeiten ("src/sync.properties") stehen habe, in ("./sync.properties") unbenannt, die Property-Datei aus der Eclipse-Verzeichnisstruktur gelöscht und die neu generierte, ausführbare JAR-Datei im gleichen Ordner wie die externe Config-Datei (Propery-Datei).

    - Nur beim Ausführen funktioniert es leider nicht

    Bedarf es doch eines grösseren Umbaus ?

    Grüße

  • #2
    Nutze
    properties.load(new FileInputStream("sync.properties")

    Siehe auch

    http://entwickler-forum.de/showthrea...atei-speichern
    Zuletzt editiert von Christian Marquardt; 30.07.2012, 20:37.
    Christian

    Comment


    • #3
      habe eben bemerkt, dass ich bei einer internen Config-Datei den Zusatz "src/" bei "src/name.properties" weglassen kann. Funktioniert auch.

      den Zusatz "./" habe ich auch jetzt entfernt.

      sowas wie das "properties.load(new FileInputStream("sync.properties")" habe ich ja auch :

      try{
      Properties pro = new Properties();
      datei = new File("sync.properties");
      if(!datei.exists())System.out.println("sync.proper ties existiert nicht");
      else{
      FileInputStream in = new FileInputStream(datei);
      pro.load(in);
      pro.setProperty(bezeichnung, wert);
      pro.store(new FileOutputStream(datei),null);

      Tja.....klappt aber leider nicht.

      Comment


      • #4
        Tja.....klappt aber leider nicht.
        ..ist kein Fehler. was werden für Exceptions geworfen usw.
        Christian

        Comment


        • #5
          hmm...die Möglichkeit habe ich jetzt bei der ausführbaren Jar-Datei nicht.
          Ausgaben habe ich nur bei Eclipse(sysou) wenn die interne Config-Datei Probleme machen würde, würde ich es sofort sehen woran es liegt ...

          Sowas funktioniert leider auch nicht, den ganzen Pfad anzugeben wo ich ablegen würde :
          this.getClass().getClassLoader().getResourceAsStre am("C:/Dokumente und Einstellungen/NAME-C/Desktop/sync.properties");

          Comment


          • #6
            hmm...die Möglichkeit habe ich jetzt bei der ausführbaren Jar-Datei nicht.
            Sicherlich hast du die:

            Console öffnen und in das Verzeichnis deines JAR wechseln und java -jar "dein.jar"

            Dann läuft das in der Console und du siehst die Ausgaben. Des Weiteren muss das auch ohne Änderung irgendeines Pfades beim Ablauf in der IDE funktionieren. Es ist wurscht, ob das in der IDE läuft oder Standalone.

            Du legst Anwendungen auf dem Desktop ab?
            Zuletzt editiert von Christian Marquardt; 31.07.2012, 19:12.
            Christian

            Comment


            • #7
              Ne, das war ne Ausnahme ; Anwendungen lege ich in der Regel nicht auf'm Desktop ab "räusper".

              Jedenfalls kommt jetzt die Fehlermeldung : Unable to access jarfile "mein.jar"

              Wenn ich die Config-Datei intern einbinde, funktioniert es und alles wird auf der Console ausgegeben.

              Also, ich befinde mich auf der Konsole auch im gleichen Pfad wo die Jar-Datei liegt ...

              Jetzt geht's doch...okay, schaue es mir mal an...also, die Fehlermeldung...

              Fehlermeldung : in null, dateiname=name.properties
              java.lang.NullPointerException

              Also hier hat er das Problem :

              private Properties getProps()
              {
              ClassLoader loader;
              loader = ClassLoader.getSystemClassLoader();

              InputStream in = null;
              in = this.getClass().getClassLoader().getResourceAsStre am("name.properties");

              if(in == null)
              {
              System.out.println("in null, dateiname=name.properties");
              }
              Zuletzt editiert von christian78; 01.08.2012, 11:09.

              Comment


              • #8
                Jedenfalls kommt jetzt die Fehlermeldung : Unable to access jarfile "mein.jar" -> wahrscheinlich liegt das daran, dass deine jar-Datei nicht "mein.jar" heisst. Und das ganze mit den Classloader ist falsch, da die Datei eben nicht im Klassenpfad liegt, sondern außerhalb
                Christian

                Comment


                • #9
                  tja, und wie kann ich dem Classloader sagen dass die Config-Datei sich extern befindet und nicht innerhalb des Klassenpfads von Eclispe ?

                  Comment


                  • #10
                    überhaupt nicht, sondern properties.load(new FileInputStream("sync.properties"). Es wird im aktuellen Verzeichnis gesucht. Der Classloader ist nicht zu verwenden!
                    Zuletzt editiert von Christian Marquardt; 01.08.2012, 13:38.
                    Christian

                    Comment


                    • #11
                      Hey, Danke ! Es funktioniert tatsächlich so wie Du es gesagt hast

                      Comment


                      • #12
                        sehr schön :-)
                        Christian

                        Comment

                        Working...
                        X