Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
der Titel des Themas sagt eigentlich fast alles: wie gehe ich mit .properties-Dateien um: wo gehören sie rein und was schreibe ich dazu in die pom-Datei?
meintest du eventuell "src/main/res...", denn die Datei ist für das Programm gedacht?
Was das Packaging betrifft kann ich nur auf meinen anderen Thread verweisen (Danke auch dort für die Antwort). Mich würde in erster Linie interessieren, wie man Maven mitteilt, das diese Datei ein Teil des Builds ist. So das sie nach dem kompilieren so liegt, das sie das Programm auch findet. Wie man in dem anderen Thread sieht benutze ich zum erstellen und ausliefern im Moment kein Maven und was die properties-Datei betrifft, die leigt irgendwo unter src/main und wird nach dem erstellen einfach zur jar/exe-Datei dazu kopiert.
könnte man mit maven diese Datei auch mit in das jar-File verpacken?
Mich würde in erster Linie interessieren, wie man Maven mitteilt, das diese Datei ein Teil des Builds ist. So das sie nach dem kompilieren so liegt, das sie das Programm auch findet. Wie man in dem anderen Thread sieht benutze ich zum erstellen und ausliefern im Moment kein Maven und was die properties-Datei betrifft, die leigt irgendwo unter src/main und wird nach dem erstellen einfach zur jar/exe-Datei dazu kopiert.
könnte man mit maven diese Datei auch mit in das jar-File verpacken?
Das ist der Sinn die Datei(en) in src/main/resources zu legen. Dann wird die automatisch mit in die JAR Datei packetiert..(Convention over Configuration)...ok...das erscheint manchmal ein Wenig wie "Magie" ;-)..
ich das ganze mal probiert (siehe anderer thread) und offensichtlich wird die properties datei nicht gefunden?! ich habe die datei unter src\main\resources\Paketname. es kommt an der entsprechenden Stelle eben eine File not found exception. Wenn ich die Datei aber zur -jar Datei dazu kopiere funktioniert es.
Ist die "Konvention" eventuell die resourcen nicht mitzuverpacken? so dass man es mitteilen muss, das man sie verpacken möchte?
also auf die Property-Datei greife ich mit:
prop = new PropertyResourceBundle(new FileInputStream("meine.properties")); zu.
edit: ok es funktioniert: es lag daran, dass ich das assembly plugin auskommentiert hatte. nun hab ich jar und assembly plugin drinne und alles funzt wie ess soll.
esfunktioniert doch nicht. ich habe bemerkt, dass das Programm nicht die Property-Datei aus der JAr-Datei benutzt sondern die Datei die noch im Pfad der pom-Datei lag(- der aktuelle Pfad in der Konsole). Als ich die gelöscht hab gabs wieder "FileNotFoundException". Wie gesagt, in der jar-Datei ist die Property-Datei, sie wird nur nicht benutzt.
Wie sage ich Maven wo er nach Resourcen schauen soll bzw. das Maven dem Programm sagen soll, wo es nach Resourcen suchen soll? - mit dem "resource Plugin"?
Sollte das Problem lösen...Da Du ja die Properties Datei aus der JAR Datei verwenden möchtest...und nicht die aus dem Dateisystem (FileInputStream("..."));...
Wie auch schon mvitz geschrieben hat...
das bedeutet aber im Umkehrschluss, dass man im Code festlegen muss ob die Properties in der jar sind oder extern - was gar kein Problem ist. Ich hatte aber kurz die Hoffnung das man das per Maven "umschalten" kann.
Solange die Datei über den Classpath auffindbar ist, ja Also dazu kann sie entweder im .jar sein oder irgendwo auf der Platte (dann muss aber der ordner in dem sie sich befindet im Classpath sein).
ist der "aktuelle pfad" oder der pfad der jar-Datei automatisch im Classpath? Falls es 2 Dateien gibt(in der jar und im restlichen classpath) welche wird genommen?
Wenn du eine Runnable JAR hast, dann ist das JAR-File selber und alle Einträge aus dem MANIFEST.MF im Pfad. Wenn du das JAR anders startest, gibst du ja den Pfad selber an und kannst so kontrollieren, welche genommen wird.
Sollte die Datei zweimal im Pfad sein, weiß ich nicht, was passiert. Müsste man mal ausprobieren.
die frage ist ob ich irgendwas "zusätzliches" tun muss, falls ich die properties datei nicht in die jar-Packe (dafür müsste ich das assembly plugin deaktivieren, oder?) sondern sie einfach neben die jar-Datei lege.
in beiden Fälllen soll das ganze durch doppelklick auf die jar gestartet werden. und die nächste frage wäre ebend ob man eine properties-Datei quasi als default-Einstellung in die jar packen kann und der user diese Einstellungen mit einer eigenen properties-Datei einfach überschreiben kann. - also geht das alles ohne zusätzlichen code/ ohne eingreifen in die pom-datei?
die frage ist ob ich irgendwas "zusätzliches" tun muss, falls ich die properties datei nicht in die jar-Packe (dafür müsste ich das assembly plugin deaktivieren, oder?)sondern sie einfach neben die jar-Datei lege.
Das assembly Plugin hat nichts damit zu tuen...wenn Du die properties in src/main/resources legst wird die automatisch mit in das JAR gepackt...
Wenn Du die properties Datei daneben legen willst musst Du anders packen...
in beiden Fälllen soll das ganze durch doppelklick auf die jar gestartet werden. und die nächste frage wäre ebend ob man eine properties-Datei quasi als default-Einstellung in die jar packen kann
und der user diese Einstellungen mit einer eigenen properties-Datei einfach überschreiben kann. - also geht das alles ohne zusätzlichen code/ ohne eingreifen in die pom-datei?
Der User müsste nur den entsprechenden Aufruf der JVM mit eine classpath parameter versehen und in den angegebenen Path eben eine properties file ablegen...
Ich würde dann eher dazu tendieren einen ZIP/tar.gz erzeugen in dem alles drin liegt wie folgt:
Code:
xyz-1.0
+-- etc
+--- property files
+-- lib
+--- jars'
+-- bin
+--- batch file for starting
Da hat mir der appassembler sehr gute Dienste erwiesen...
Dann kann der User einfach im etc-Verzeichnis die Datei ändern...
Gruß
Karl Heinz Marbaise
danke kama, aber wie es so ist erzeugen gute antworten noch mehr Fragen :
in dem anderen Thread wo es um die Ausführbare jar-Datei ging, hast du mir appasssembler oder assembly plugin empfohlen um ausführbare jar-Dateien zu erzeugen. Im Laufe des Threads hab ich dann bemerkt, dass es ohne jar-Plugin nicht funktioniert (dort habe ich auch die "Main"-Klasse angegeben).
Nun Frage ich mich welches Plugin wofür zuständig ist. Irgendeins muss ja alles zusammenpacken inkl. der Properties-Datei (das Resource -Plugin -speziell für "Resources"??, und Assembly für den Rest??). Eine ausführbare jar-Datei zu machen (jar-Plugin??)
Also welches Plugin wofür zuständig ist, ist mir noch nicht so richtig klar.
Was mein eigentliches Problem betrifft: das Feature mit den Defaulteinstellungen ist mir nicht so wichtig. Mir wäre nur wichtig wie leicht ich zwischen Properties in der jar und außerhalb(im Pfad der jar-Datei) wechseln kann. Also ob
auch den Pfad der jar-Datei (per Doppelklick gestartet) beinhaltet. Dann könnte man ggf. eine Properties-Datei schreiben und die andere aus der jar-Datei löschen.