PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mac Befehl mit Java ausführen



fuzzycontrol
08-08-2006, 10:30
Hi,

ich will mit einem Java-Programm eine Datei in ein externes Programm laden.

für Windows benutze ich den Befehl

process = runtime.exec("cmd /C " + "\"" + dateiname + "\"");

Das funzt wunderbar. Die Datei mitsamt verknüpftem Programm wird gestartet bzw. geladen.

Meine Frage: Wie sieht der entsprechende Befehl für MacOS aus? Oder funktioniert der etwa auch so in Mac?

falke2203
08-08-2006, 11:40
Ob cmd unter OS X unterstützt wird weiß ich nicht, aber schau dir doch mal die J6SE Beta an, insbesonders -> diese <- (http://download.java.net/jdk6/docs/api/java/awt/Desktop.html) Seite...

fuzzycontrol
08-08-2006, 12:17
danke für die schnelle Antwort.
Das könnte sogar funktionieren, nur kann ich meinem Kunden nicht zumuten ne JRE6 beta zu installieren.
Ich hab aber in dem Zusammenhang noch etwas gefunden:
eine lib von https://jdic.dev.java.net/
In der Beschreibung steht, dass die lib das gleiche kann wie java.awt.Desktop

Nur leider hab ich in deren Forum über viele Probleme mit der Mac-Unterstützung gelesen.
Kennt sich vielleicht jemand damit aus?

falke2203
08-08-2006, 12:31
...um genau zu sein, JDIC war die Grundlage für diesen Bereich in J6SE. Ich würde dir einfach vorschlagen, dir die lib zu laden und für deine Bedürfnisse zu testen. Das ist die schnellste und einfachste Lösung um herauszufinden ob das für dich dir richtige Wahl ist :)

fuzzycontrol
14-08-2006, 16:13
ich hab's jetzt endlich mal geschafft, die jdic lib einzubinden und auf Mac zu testen (entwickle in windows)

Beim Aufruf von :
Desktop.open(new File(filename));

kommt auf Mac folgender Fehler:
java.lang.UnsatisfiedLinkError: no jdic in java.library.path

die lib liegt bei mir im Verzeichnis /Projektverzeichnis/lib
scheint er auch irgendwie zu finden

Ich hab in Ecipse mit Fatjar ein jar erstellen lassen.
Hab mal in das jar reingeschaut und da ist jdic im lib-Verzeichnis auch drin.

In Windows funzt das alles natürlich einwandfrei.

Zufällig eine Lösung parat? ^^

falke2203
14-08-2006, 18:05
librarypath != classpath!!!

Was ihm offensichtlich fehlt, ist die library mit dem native code (unter Win die jdic.dll). KA was da unter OS X gebraucht wird, ich würde es aber mal mit den *.so-Datei(en) versuchen (OS X ist ja am Ende auch ne Unix-Abart, oder?). Wenn dem so ist, sollte es reichen diese Dateien in das Ausführungsverzeichnis zu legen. Ansonsten kann es dir passieren, dass du dir die Sourcen von JDIC ziehen und selbst kompilieren musst...

fuzzycontrol
15-08-2006, 08:50
So, jetzt funzt es endlich (bis hierher ^^).

Mac benötigt eine spezielle Version von jdic (bisher nur 0.8x),
die ich auch nur im jdic-Forum gefunden habe. Im Downloadbreich ist da irgendwie nix dergleichen.

Außerdem muss die jdic.jar unbedingt im lib-Verzeichnis liegen.

Jedenfalls gehts jetzt so wie ich es mir vorgestellt hatte. Leider ist jetzt nix mehr mit Plattformunabhängigkeit, but never mind. (Vielleicht wird sich das ja mit Java1.6 lösen)

Vielen Dank für deine Hilfe :)

fuzzycontrol
15-08-2006, 09:53
Nachtrag:

die libjdic.jnilib muss auch mit

fuzzycontrol
16-08-2006, 07:58
jetzt muss ich es nur noch hinkriegen, dass die libjdic.jnilib mit ins fatjar/onejar reinkommt, damit die jar wieder stand-alone ist.

Weiss zufällig jemand wie das geht?

bei jar-libs ist es ja kein Problem, aber wie sieht das mit native-libs (dll, jnilib) aus?