Mehrere JOSM-Profile

Ich möchte mich an der OpenGeofiction-Karte beteiligen und dafür JOSM einsetzen, gleichzietig aber auch weiterhin in OSM mappen können. Gibt es eine Möglichkeit mehrere JOSM-Profile anzulegen um beide Logindaten und projektspezifische Einstellungen zu trennen? 2 .jar-Dateien an unterschiedlichen Orten wird wohl nicht funktionieren, da im Ordner mit der .jar keine Einstellungsdatei erzeugt wird. (Wo immer die auch liegt).
Jetzt wäre es natürlich möglich per Batch-Datei zwei Einstellungsdateien auszutauschen, aber ich vermute die Entwickler von JOSM haben diesen Fall berücksichtigt und es gibt eine Einstellung die ich nur übersah.

OPTIONS

…

       --load-preferences=<url-to-xml>
              Change preferences according to the XML file

…

JAVA PROPERTIES
       The following options can be set by using Java system properties (i.e. -Dkey=value passed to java, or specified inside JAVA_OPTS).

       josm.pref=<path>
              Set the JOSM preferences directory.

       josm.userdata=<path>
              Set the JOSM user data directory.

       josm.cache=<path>
              Set the JOSM cache directory.

       josm.home=<homedir>
              Relocate all 3 directories to homedir. Cache directory will be in homedir/cache.  Default is ~/.josm/.

Vielen Dank!

Nur mal zum Verständnis, die Syntax lautet dann:

D:\OSM\JOSM>josm-tested.jar --load-preferences="file:///D:\OSM\JOSM\preferences_ogf.xml"

Weil das funktioniert nämlich nicht, es wird trotzdem die preferences.xml in AppData genommen.

Das “file” hat da auch nichts zu suchen. Was du möchtest ist:

java -Djosm.home="D:\OSM\JOSM-A" -jar josm-tested.jar

und

java -Djosm.home="D:\OSM\JOSM-B" -jar josm-tested.jar

Wie genau die Pfade jetzt unter Windows aussehen müssen, damit Java sie versteht, weiß ich nicht.

Habe das gerade mal durchprobiert.
Bei mir lautet der Aufruf

C:\Windows\System32\java -jar "C:\Program Files (x86)\OpensTreetMap\JOSM\josm-latest-8229.jar" --load-preferences=file:///E:\Temp\josm.xml

(Pfade anpassen!)
Davor habe ich die preferences.xml aus %appdata%\JOSM (das kannst du so im Windows-Explorer eintippen) nach E:\Temp\josm.xml kopiert (sonst gibt’s ne FileNotFoundException).
Die Angabe des Protokolls vor der Datei ist nötig, da sonst eine MalformedURLException kommt.

Noch n Trick, falls du nicht immer die Kommandozeile im Hintergrund haben willst: schreibe dir ein kleines VBS-Skript wie folgendes und passe es entsprechend an.

Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:\Windows\System32\java.exe -Xmx4G -jar ""C:\Program Files (x86)\OpenStreetMap\JOSM\josm-latest-8229.jar""", 0

Danach erstelle eine Verknüpfung auf dem Desktop und setze noch das JOSM-Icon aus josm.exe (oder was dir sonst gefällt).
Mit zwei solchen Skripten und Verknüpfungen wird das ganze angenehmer.

Interessant, da lag ich also falsch. Macht die Sache aber noch spannender, wenn die Preferences von jeder URL aus geladen werden können.

Hallo an die Java-Profis…

wenn ich versuche, JOSM aus der Powershell mit

java -Djosm.home="d:\osm\josm-dev" -jar josm-tested.jar

zum Starten eines neuen Profils zu bringen, erhalte ich nur eine Fehlermeldung:

Fehler: Hauptklasse .home=d:\osm\josm-dev konnte nicht gefunden oder geladen werden
Ursache: java.lang.ClassNotFoundException: /home=d:\osm\josm-dev 

Das Verzeichnis existiert, der Benutzer hat Vollzugriff.
Wenn ich das -Djosm… weglasse, startet JOSM ganz normal.
Was könnte ich noch versuchen?

Windows 10 Home 64bit
openjdk version “11.0.6” 2020-01-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.6+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.6+10, mixed mode)

Bei mir funktioniert es mit z.B.


java -Djosm.home=c:/temp/josm_dev3 -jar josm-tested.jar

aber auch mit


java -Djosm.home="c:\temp\josm_dev3" -jar josm-tested.jar

Sowohl unter AdoptOpenJDK als auch mit Oracle.

Edit: Obiges gilt für die cmd shell. In einer powershell bekomme ich den gleichen Fehler.

Aaaaaaah! Danke! Jetzt geht’s hier auch – hätte ich als allerletztes erwartet, dass die shell einen Unterschied macht :roll_eyes: