macOS High Sierra Start des Java-Programms vcardgrid nicht möglich

T

thulium

Aktives Mitglied
Thread Starter
Dabei seit
12.11.2011
Beiträge
3.657
Reaktionspunkte
397
Hallo.

Mir gelingt es nicht, das Programm vcardgrid zu starten.

https://vcardgrid.lima-city.de/

Es dient der Transformation von Kontakten im Format vcard in's Excel-Format und zurück.

Die aktuellste Java-Version habe ich installiert:
https://www.dropbox.com/s/5nrl119ggq0u5dr/Screenshot 2018-08-31 08.10.41.png?dl=0

Wenn ich das Shellscript "run.sh" in der Konsole starte, erhalte ich:

sh /Users/Andreas/vcardgrid/run.sh

Error: Unable to access jarfile vcg.jar
: command not foundn.sh: line 2:
: command not foundn.sh: line 3:
: command not foundn.sh: line 6:

Wenn ich "vcg.jar" als sudo in der Konsole starte, erhalte ich:

sudo java -jar /Users/Andreas/vcardgrid/vcg.jar

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException:
sun.misc.Launcher$AppClassLoader cannot be cast to
com.simontuffs.onejar.JarClassLoader
at
com.simontuffs.onejar.JarClassLoader.getByteStream(JarClassLoader.java:753)
at com.simontuffs.onejar.Handler$1.getInputStream(Handler.java:50)
at java.net.URL.openStream(URL.java:1045)
at sun.awt.SunToolkit.imageExists(SunToolkit.java:912)
at sun.lwawt.macosx.LWCToolkit.getImage(LWCToolkit.java:554)
at javax.swing.ImageIcon.<init>(ImageIcon.java:198)
at javax.swing.ImageIcon.<init>(ImageIcon.java:217)
at com.drs.vcf.gui.VcfGui.<init>(Unknown Source)
at com.drs.vcf.gui.VcfGui$34.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Weiterhin habe ich noch die App Platypus installiert und "einen Wrapper um das Shellscript" erzeugt.

Ich erhalte:

Error: Unable to access jarfile vcg.jar
/Users/Andreas/vcardgrid/Platypus-Vcardgrid.app/Contents/Resources/script: line 2:
: command not found
/Users/Andreas/vcardgrid/Platypus-Vcardgrid.app/Contents/Resources/script: line 3:
: command not found
/Users/Andreas/vcardgrid/Platypus-Vcardgrid.app/Contents/Resources/script: line 6:
: command not found

Über einen Rat zur Fehlereingrenzung freue ich mich. Danke.
 
zeig mal das run.sh hier in code-blocks.
 
ich denke mal das läuft nicht mit java 8.
probier mal das 1.6 apple java …
gerade mal probiert, mit dem 1.6 apple java geht …

um das run.sh richtig zu nutzen, musst du schon vorher in das verzeichnis wechseln wo vcg.jar liegt …
das ruft ja nur stumpf
java -Dfile.encoding=UTF-8 -jar vcg.jar
auf …
 
Beim Aufruf von JAR-Dateien muss man grundsätzlich entweder in das Verzeichnis wechseln, wo die JAR-Datei liegt, oder per Parameter den Class-Path mitgeben. Ansonsten funktioniert das nicht.
 
Das Shellscript "run.sh" liegt gemeinsam mit "vcg.jar" im Verzeichnis "/Users/Andreas/vcardgrid".

Der Code zu run.sh:

Code:
java -Dfile.encoding=UTF-8 -jar vcg.jar

Zu Java 6 vs. 8

Ist es denn kein Sicherheitsrisiko ein ältere Version von Java zu verwenden?

Falls das gesichert ist, dass vcardgrid mit Java 6 läuft, nicht aber mit 8, dann könnte ich dem Entwickler einen entsprechenden Hinweis geben und ihn bitten, sein Programm anzupassen.

Bis dahin:
Kann man Java 6 neben 8 installieren und dann so gesondert aufrufen?

Uff, ganz schön kompliziert, wenn ein Entwickler keine *.app bereitstellt.
 
Zuletzt bearbeitet:
Uff, ganz schön kompliziert, wenn ein Entwickler keine *.app bereitstellt.
Echt jetzt... was fällt dem Entwickler ein, seine kostenlose Software in einer Sprache zu entwickeln, die plattformübergreifend überall läuft und nicht in einer Nischensprache auf ein Nischensystem begrenzt, dass vielleicht 2-3% der weltweiten Computer unterstützt? :rolleyes: :D

Ältere Java-Versionen sind nur dann ein Risiko, wenn sie über den Browser als Plugin geladen werden. Da dies bei 1.6 nicht mehr der Fall ist besteht auch kein Risiko. Parallel kann man sie durchaus installieren, leider kann ich aber gerade nicht testen weil obige Webseite tot zu sein scheint und ich die JAR-Datei nicht runterladen kann.
 
@mj
Da verstehst Du mich miss.
Natürlich liegt es völlig im Ermessen des Entwicklers, wie er sein Programm bereitstellt.

Was ist denn bitte die Ursache, dass überhaupt ein Shellskript nötig ist? Liegt das an Java oder an Apple? Der Entwickler nennt ja als Grund irgendwas mit Zeichensätzen.

Ich habe die Website des Entwicklers gerade aufgerufen, sie ist verfügbar.
Alternativ gibt es sein Programm bei Heise:
https://www.heise.de/download/product/vcard-grid-53454

Zu Java 6
Wie installiere ich denn bitte diese Version neben der 8 und wie rufe ich dann vcg.jar gezielt mit 6 auf?

Oracle bietet offenbar Java 6 nicht mehr an, zumindest deute ich die Aussage auf
https://java.com/de/download/faq/java_7.xml so.

Noch eine Frage:
In einigen Texten zur Nutzung von JAR auf macOS ist die Rede davon, dass man erst ein Flag "ausführbar" setzen muss. Kann das die Ursache sein? Wie setzt man bitte so ein Flag korrekt, damit der User das JAR ausführen kann?
 
Jetzt geht die Seite auch wieder. Kann bestätigen, dass die Software mit Java 1.8 nicht läuft, auf meiner Entwicklermaschine ist aktuell 1.8.0_172 drauf und damit stürzt es beim Start ab. Ist aber auch kaum verwunderlich, laut Entwickler ist die Software auf Stand "02.02.2013", vermutlich wird da ein Hinweis deinerseits die Software doch bitte mit Java 8 oder gar Java 10 kompatibel zu machen nicht mehr viel bringen ;)

Ich hab auf dem System gerade leider kein Java 1.6 installiert, aber ich meine es müsste bei paralleler Installation in /System/Library/Frameworks/JavaVM.framework/Versions abgelegt werden. Um diese Software dann explizit mit Java 1.6 aufzurufen reicht es den Aufruf in der run.sh entsprechend um den vollständigen Pfad der Java-Binary zu ergänzen.
 
Danke für Deinen Test.

Oracle bietet Java 6 nicht mehr an. Wo würdet ihr es beziehen?

Ist bitte jemand so nett und schreibt nochmal genau wie der Eintrag in der Konsole lauten muss, um run.sh mit Java 6 aufzurufen.

Was ganz Anderes:
Kennt ihr eine alternative Software für macOS, die eine Transformation des Formats Vcard nach Excel und zurück erlaubt?

Toll wäre es (das kann, soweit ich weiß, Vcardgrid nicht), wenn die Software auch die Zuordnung von Kontakten zu Gruppen gewährleisten würde.
 
Die Java 1.6 legacy runtime bekommst du direkt bei Apple: https://support.apple.com/kb/dl1572?locale=en_US

Da ich diese aber wie gesagt nicht installiert habe kann ich auch nicht mit dem genauen Pfad dienen, wohin diese installiert wird. Das darf jemand prüfen der diese Version von Java bereits installiert hat.
 
Zum Thema alternative Software: mein Google-Fu hat gerade ergeben, dass dies unter macOS denkbar einfach ist und gar keiner Zusatzsoftware bedarf. Alles, was du benötigst, sind die Kontakte und Numbers: einfach aus der Kontakte-Anwendung alle Kontakte markieren und in ein leeres Tabellenblatt in Numbers ziehen und anschließend als CSV exportieren. Siehe hier: https://discussions.apple.com/thread/6007355

Diese CSV kannst du anschließend in Excel bearbeiten und dann wieder zurück in Kontakte importieren.
 
Habe ich gleich mal ausprobiert.

Leider werden beim Einfügen von Adressen per Ziehen aus Kontakte.app keine Gruppen transportiert.

Diese wichtige Information darf jedoch nicht verloren gehen.

Wenn es in Numbers funktionieren würde, könnte man auch auf den Umweg via Excel verzichten.

Aber einfaches Experiment zeigt: Ein aus Numbers exportiertes CSV kann von Kontakte.app nicht importiert werden.

Fehlermeldung: https://www.dropbox.com/s/ozjfva49n9bgypj/Screenshot 2018-08-31 17.22.49.png?dl=0

Beispiel-Dokument, welches aus Numbers erzeugt wurde:

Code:
Nachname;Vorname;Telefon : Mobile;Adresse : Home : Straße;Adresse : Home : Stadt;Adresse : Home : Bundesland;Adresse : Home : Land;Adresse : Home : PLZ
AAAA;Foo;491234567;Amselgasse;Berlin;;;12345

Weiterhin werden führende "+" in Spalten mit Nummern rausgekickt. Wirklich trivial ist es eben nicht. Da gibt es diverse Fallstricke.
 
ich denke mal das läuft nicht mit java 8.
probier mal das 1.6 apple java …
gerade mal probiert, mit dem 1.6 apple java geht …

Jetzt geht die Seite auch wieder. Kann bestätigen, dass die Software mit Java 1.8 nicht läuft, auf meiner Entwicklermaschine ist aktuell 1.8.0_172 drauf und damit stürzt es beim Start ab. Ist aber auch kaum verwunderlich, laut Entwickler ist die Software auf Stand "02.02.2013", vermutlich wird da ein Hinweis deinerseits die Software doch bitte mit Java 8 oder gar Java 10 kompatibel zu machen nicht mehr viel bringen ;)

Mich hat verwundert, dass das hier schon öfters (sehr oft) erwähnt wurde, dass man angeblich Java 1.6 installieren muss für altere Java-Software. Klar, das könnte mal vorkommen, aber Java ist doch schon sehr backwardskompatibel und mir ist das noch nie unter Windows/Linux vorgekommen. Deshalb dachte ich, probiere ich das auch mal aus:

Auf einem aktuellen Windows 10 mit JDK/JRE 8 Update 181 habe ich kein Problem mit der Anwendung. Ich hab das .zip entpackt, doppelt auf die .jar geklickt, läuft. Das scheint also eher Mac OS X oder unwahrscheinlicher dessen Java Runtime Implementierung als Grund zu haben. Apple hatte bis Java 1.6 ja selbst die Runtime (mit-)entwickelt und released aus irgendeinem Grund. Ist halt schon scheiß jetzt, wenn deshalb alles inkompatibel wäre/ist, da sie es ja nicht mehr selbst weiterentwickeln.

PS: Ich persönlich würde mir echt kein Java 1.6 im Jahre 2018 mehr installieren.

vcg.jpg
 
Zuletzt bearbeitet:
Mich hat verwundert, dass das hier schon öfters (sehr oft) erwähnt wurde, dass man angeblich Java 1.6 installieren muss für altere Java-Software. Klar, das könnte mal vorkommen, aber Java ist doch schon sehr backwardskompatibel und mir ist das noch nie unter Windows/Linux vorgekommen.

Auf einem aktuellen Windows 10 mit JDK/JRE 8 Update 181 habe ich kein Problem mit der Anwendung. Ich hab das .zip entpackt, doppelt auf die .jar geklickt, läuft. Das scheint also eher Mac OS X oder unwahrscheinlicher dessen Java Runtime Implementierung als Grund zu haben.

auf aktuellen JDK 8 update 181 unter OS X läuft es halt nicht, liegt wohl an der benutzung von AWT, welches wohl halt nicht in der oracle java version vorhanden ist …
 
awt ist auch auf macos, nach wie vor, drin.

Bildschirmfoto 2018-08-31 um 18.41.52.png
 
da schauen wir doch noch mal auf das crash log, scheint ja einen eigenen class loader zu haben und wenn ich den backtrace richtig deute wird wohl irgendeine security exception das ganze unterbinden.
ist unter windows der default anders als unter OS X bei der java security?
 
Der Fehler ist die ClassCastException, keine "SecurityException".

Von dem wie ich das auf Google sehe, scheint das java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege() in jedem "AWT-EventQueue-0"-Thread Trace zu sein, falls du das meinst.

Launcher$AppClassLoader hört sich auf jeden Fall nach ziemlich früh im Programm auftretende inkompatibilität an. Wieso das bei mir mit (Oracle) Java 8 geht, aber Dir aber nicht, erschließt sich mir jedoch nicht so ganz. Außer eben, dass unsere OSe anders sind (aber die Runtime sollte ja ziemlich gleich sein).
 
kannst du das ding mal mit "java -d64 ..." starten?
 
Ich wusste nicht ob du mich meinst, aber ich hab die run.cmd angepasst in

java -D32 -Dfile.encoding=ISO-8859-1 -jar vcg.jar
und
java -D64 -Dfile.encoding=ISO-8859-1 -jar vcg.jar

beides lief auf meinen Windows 10 64Bit mit Java 8.
 
Zurück
Oben Unten