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

Ich bin per Mail in Kontakt mit den Autor Stefan, der VcardGrid geschrieben hat. Ich habe ihn auch auf diesen Thread hingewiesen. Netterweise ist er dabei den Code so anzupassen, bis er auch auf macOS unter Java8 funktioniert. Sobald das klappt, berichte ich hier. Falls jemand mit Programmierkenntnissen den Autor unterstützen möchte: er wird sich bestimmt freuen, da er selber keinen Mac zum Testen zur Verfügung hat.

Nochmal zurück zu der Lösung der Aufgabe "Kontakte nach Excel und zurück":
Klappt es bei euch via Numbers? Ich habe die Fehlermeldung ja berichtet.
 
  • Gefällt mir
Reaktionen: dg2rbf und chris25
Ich bin per Mail in Kontakt mit den Autor Stefan, der VcardGrid geschrieben hat. Ich habe ihn auch auf diesen Thread hingewiesen. Netterweise ist er dabei den Code so anzupassen, bis er auch auf macOS unter Java8 funktioniert. Sobald das klappt, berichte ich hier. Falls jemand mit Programmierkenntnissen den Autor unterstützen möchte: er wird sich bestimmt freuen, da er selber keinen Mac zum Testen zur Verfügung hat.

Also meiner Meinung nach hast du das auch evlt einfach noch nicht richtig gestartet.

Hast du das mal ohne sudo aus dem Ordner heraus ohne vorstehendes sh gestartet?

Der erste Error in dem CODE-Block kommt doch daher, dass das jar gar nicht gefunden wurde (weil es nicht in dem Ordner liegt in dem die Shell gestartet wird).
Der zweite CODE-Block ist mit vorangestellten sudo (warum?).

Wenn du mit dem Terminal in den Ordner wechselst und ./cmd.sh ausführst (notfalls vorher ein chmod u+x cmd.sh) oder direkt mittels

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

kommt dann eigentlich der gleiche Error?

EDIT: Also was ich meint: Error: Unable to access jarfile vcg.jar klingt nicht nach generell kaputt, sondern falsch ausgeführt (wie auch schon beschrieben hier im Thread). Und das man eine Exception bekommt wenn man n (6 Jahres) GUI-Programm als sudo ausführt, würde mich jetzt nicht direkt verwundern.
 
Zuletzt bearbeitet:
@xentric
Der Fehler wurde hier ja bestätigt von Postern, die mit der Konsole erfahren sind. Daher halte ich es für ausgeschlossen, dass es an der Art des Aufrufs liegen kann.

Nicht zuletzt geht es ja auch darum, dem Autor einen Hinweis geben zu können, dass exakt der Weg zum Starten funktioniert, den er in seinem Manual angibt.

Und der Weg lautet nunmal "sh [Pfad zu run.sh]".

Praktisch wäre ein im Manual dokumentierter Weg, wie man VcardGrid wie ein ganz normales Programm im Programmordner eintragen kann. Platypus kann ich erst ausprobieren, wenn das Programm über das Shellskript startet.

Aus Neugier:
Warum ist auf macOS überhaupt ein Shellskript nötig und warum startet eine JAR nicht per Default einfach per Doppelklick?

Zu sudo:
Das habe ich nur der Vollständigkeit halber ausprobiert.
 
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.

es läuft ja nur bei dir. :p
aber gemeint war -d64/-d32 (kleines d), weil -D nur setzen von variablen ist und hier einfach nicht wirkt.

zum starten: auch wenn er es nicht korrekt startet (laut handbuch ./run.sh), der cast-fehler kommt so auch bei mir.
 
Wenn du mit dem Terminal in den Ordner wechselst und ./cmd.sh ausführst (notfalls vorher ein chmod u+x cmd.sh) oder direkt mittels

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

kommt dann eigentlich der gleiche Error?

Ich habe das jetzt getestet:

Code:
Andreas$ cd /Users/Andreas/vcardgrid

vcardgrid Andreas$ java -Dfile.encoding=UTF-8 -jar 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)
 
es läuft ja nur bei dir. :p
aber gemeint war -d64/-d32 (kleines d), weil -D nur setzen von variablen ist und hier einfach nicht wirkt.

zum starten: auch wenn er es nicht korrekt startet (laut handbuch ./run.sh), der cast-fehler kommt so auch bei mir.

Oh, okay :). Hätte ja auch oneOeight gemeint sein können ;)

Code:
V:\tmp\vcg>java -d32 -Dfile.encoding=ISO-8859-1 -jar vcg.jar
Error: This Java instance does not support a 32-bit JVM.
Please install the desired version.

mit -d64 gehts, aber ist ja nicht weiter verwunderlich bei der Fehlermeldung.
 
womit das auch geklärt wäre.

Aus Neugier:
Warum ist auf macOS überhaupt ein Shellskript nötig und warum startet eine JAR nicht per Default einfach per Doppelklick?
wenn die jar korrekt läuft, kann man sie auch per doppelklick starten. ansonsten nimmst du ein script, wenn du variablen etc. mitgeben willst/musst.
Praktisch wäre ein im Manual dokumentierter Weg, wie man VcardGrid wie ein ganz normales Programm im Programmordner eintragen kann. Platypus kann ich erst ausprobieren, wenn das Programm über das Shellskript startet.
auch lösbar z.b. via applescript als starter.
 
  • Gefällt mir
Reaktionen: dg2rbf und chris25
Der Fehler ist die ClassCastException, keine "SecurityException".

schau doch noch mal genau in den kontext des backtraces.
da wird ein image über eine URL geladen, ich nehme mal an eine lokale file URL und der zugriff könnte wegen eine sandbox richtlinie nicht genehmigt sein?
das objekt könnte ja auch NIL sein, daher geht der class cast halt schief …
 
Wenns eine (neuere OS X) Sandboxrichtlinie ist, wieso gehts dann mit Java 6?

Probiers aus, mach die Sandboxrichtline aus. Wie gesagt, wenn du nach "Exception in thread "AWT-EventQueue-0"" googlst, da ist immer die java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege im trace.

Zufällige Beispiele:
https://bugs.openjdk.java.net/browse/JDK-8160328
https://bugs.openjdk.java.net/browse/JDK-8185960

Und so tief wie die im Trace ist, das wäre schon ziemlich Scheiße, wenn das die Ursache wäre. Und wenn ich Sun/Oracle wäre, und da eine Securityviolation hätte in der "ProtectionDomain", würde ich da doch nicht Null zurück geben in der api.

Möglich, sicherlich. Ich glaubs trotzdem nicht.
 
Zuletzt bearbeitet:
Zwischenbericht: der Autor hat mir noch eine angepasste run.sh gesendet. Leider brachte das auch keinen Erfolg.

Scheint ein kniffliges Problem zu sein.

P.S.:
Ich bin ja immer noch neugierig darauf, ob jemand meinen Bericht zu Numbers bestätigen kann.
 
Vermutlich nicht. Aber ich möchte sie zumindest nicht ohne Einverständnis des Autors weitergeben. Ich frage ihn.

Edit:
Der Autor möchte nicht, dass ich es weiterreiche, weil es ein Experiment ist.
 
Zuletzt bearbeitet:
So, der Entwickler hat das Problem gelöst.

Er hat das Java-Problem in der neuen Version ausgebaut: die Komponente
(One-JAR), die scheinbar nur bis Java 1.6. überall funktionierte, flog raus.

Aufrufen ließ sich das Ganze dann direkt, wenn man vorher in der Konsole in den Ordner wechselt.

java -cp ".:./lib/commons-io-2.2.jar:./lib/ostermillerutils_1_07_00.jar:./lib/jxl.jar:./lib/swing-layout-1.0.3.jar" com.drs.vcf.gui.VcfGui

Eventuell wird er die neue Version auch veröffentlichen.

Falls jemand einen sehr einfachen Workflow (für den Entwickler) kennt um so ein Javaprogramm in einen Wrapper einzubetten, so dass ein vcardgrid.app herauskommt, dann könnte ich ihm das vorschlagen.

Eventuell kann dann im Handbuch der ganze Zinnober mit "Aufrufen über die Konsole" entfallen.

Zur Funktionalität des Programms:
Das exportierte XLS enthält die Spalte "Categories". Wenn man das von Vcardgrid erzeugte VCF dann jedoch in Kontakte importiert, wird die Gruppenzugehörigkeit nicht transportiert.
Im Handbuch steht, wie ich jetzt lese, dass "Categories" zur Zeit nicht unterstützt wird.
 
Zuletzt bearbeitet:
apple hatte mal einen jar bundler, oracle bietet doch einen ANT task an.
aber k.a. ob der entwickler ANT benutzt …
 
und falls er kein ANT benutzt, kann ich ihm eine launcher applescript.app bauen.
 
Zurück
Oben Unten