Runtime exec unter MacOS X will nicht "open pfad"

Status
Nicht offen für weitere Antworten.

Stefan1200

Top Contributor
Hi,

ich habe ein kleines Problem, mit einem Code, das unter Windows wunderbar funktioniert (natürlich nicht mit open).
Wenn ich aber unter MacOS X exakt folgenden Befehl durch Runtime exec ausführen will, bekomme ich nach einer Sekunde ein return code 1 zurück und er macht nichts:

open "/Volumes/BlaBla/Ordner/"
Beispiel wenn der Datenträger "BlaBla" heisst und einen Ordner "Ordner" enthält.

Lasse ich mir exakt das mit System.out.println ausgeben, was Runtime Exec startet, und verwende dann diesen Befehl in der Terminal, öffnet open mir den Ordner. Hat jemand eine Idee, warum MacOS X bockig ist? ;-)
Ich streichel den iMac doch immer, aber er will nicht *g* ;-).

Es ist die neuste MacOS X Version mit neuster Java RE drauf.
java version "1.4.2_05"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-141.3)
Java HotSpot(TM) Client VM (build 1.4.2-38, mixed mode)

Währe klasse, wenn mir jemand ein Tipp geben kann. Braucht Ihr ein Source?
Aus dem Kopf heraus müsste das so sein:

Code:
Runtime.getRuntime().exec("open "/Volumes/BlaBla/Ordner/");
 

Kerberus

Bekanntes Mitglied
Habe auch einen Mac und bei mir funktioniert es bestens. Habe folgenden Code verwendet:
Code:
import java.io.*;

public class Test {
 public static void main(String[] args) {
  try {
   File directory = new File(args[0]);
   if(directory.isDirectory() && directory.exists()) {
    System.out.println("Gültige URL");
   } else {
    System.out.println("Falsche URL");
    return;
   }
   String befehl = "open "+directory.getPath();
   System.out.println(befehl);
   Runtime.getRuntime().exec(befehl);
  } catch(IOException ioe) { 
   System.out.println(ioe.getMessage());
  }
 }
}

Nur wenn man die root-Partition ansprechen will, geht nichts mehr.
 

Stefan1200

Top Contributor
Danke für dein Tipp, doch leider sind die beiden Macs, auf denen ich das getestet habe, etwas besonderes ;-).
Und zwar habe ich das folgende simple Test Programm programmiert:

Code:
import java.io.*;
public class OpenTest
{
	public static void main(String[] args)
    {
		File dir = new File("");
		String command = "open \"" + dir.getAbsolutePath() + "\"";

	    try
		{
		    System.out.println(command);
		    Process p = Runtime.getRuntime().exec(command);
		    System.out.println("Exit: " + p.waitFor());
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}
}

Leider wird kein Ordner geöffnet, und ich bekomme exakt folgende Ausgabe in der Terminal:

open "/Volumes/OpenTestCD/OpenTest"
Exit: 1

Gebe ich aber die Zeile

open "/Volumes/OpenTestCD/OpenTest"

direkt in der Terminal ein, öffnet sich der Ordner, genau so wie es sein soll.
Um den Fall meiner größeren Anwendung zu rekonstruieren, befand sich dieses Programm auch in einer Jar Datei.
Ich verzweifle langsam, welchen Fehler habe ich gemacht?
 

Kerberus

Bekanntes Mitglied
Habe gefunden, was den Fehler verursacht:

Code:
String command = "open " + dir.getAbsolutePath();

Ich weiss zwar nicht wieso, aber die Anführungszeichen verursachen einen Fehler.
 

Stefan1200

Top Contributor
Gehen Spaces im Pfad unter MacOS X den ohne Anführungszeichen?

Grummel, unter Windows braucht man die, unter OSX gehen die nicht...
 

Kerberus

Bekanntes Mitglied
Auch unter MacOSX braucht man die, sonst wir der Pfad nicht richtig erkannt. Aber man sollte es so weit ich weiss wie folgt machen:
/Volumes/"Meine CD"/Datei/
 

Stefan1200

Top Contributor
Ich habe inzwischen ein Dutzend Versionen meines Testprogrammes erstellt.
Leider funktioniert das mit den Anführungszeichen gar nicht.
Auch der Trick das Space Zeichen zu Escapen, wie es die Terminal standardmäßig macht, geht nicht (\ ).

Im Moment funktioniert open nur bei Pfaden ohne Spaces, also ohne Anführungszeichen, dann arbeitet open korrekt.

Ich finde es grauenvoll, wie Apple es immer wieder schafft, die Java Runtime an einigen Stellen zu versauen.

Hat noch jemand eine Idee, wie man das doch hinbekommt?
Gibt es noch einen anderen Befehl unter OS X, um Ordner oder Dokumente zu öffnen?
 

Stefan1200

Top Contributor
Habe eine Lösung, geht auch unter Windows:
Den Pfad einfach in eine URL umwandeln.
Windows ist allerdings etwas anspruchsvoll, folgende Methode generiert aus einem normalen Pfad eine URL, die sowohl unter MacOS X als auch unter Windows funktioniert:

Code:
    private String encodePath(String path)
    {
		StringBuffer sb;

		if (OS.indexOf("Windows") != -1)
		{
			sb = new StringBuffer("file:///" + path);
		}
		else if (OS.indexOf("Mac OS X") != -1)
		{
			sb = new StringBuffer("file://" + path);
		}
		else
		{
			sb = new StringBuffer("file://" + path);
		}

		int pos1 = 0;

		while (true)
		{
			pos1 = sb.indexOf(" ", pos1);
			if (pos1 == -1)
			{
				break;
			}

			sb.replace(pos1, ++pos1, "%20");
		}

		return sb.toString();
	}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Runtime.exec beendet Programm unter Linux, wenn Java Programm beendet wird Allgemeine Java-Themen 3
J Runtime.exec unter win vista? Allgemeine Java-Themen 10
M Runtime.exec unter Vista (Administrator Rechte) Allgemeine Java-Themen 2
P Copy mit Runtime.exec() unter Unix Allgemeine Java-Themen 4
M Runtime.exec unter Linux Allgemeine Java-Themen 11
M Registry Autostart Eintrag ertstellen mit Java (Runtime.getRuntime().exec()) Allgemeine Java-Themen 0
M Runtime.exec() verursacht auf manchen Systemen Probleme - Ursache unklar Allgemeine Java-Themen 2
S Command funktioniert in Kommandzeile aber nicht mit ProcessBuilder bzw. Runtime.exec auf MAC Allgemeine Java-Themen 3
Thallius Runtime.getRuntime().exec " escapen? Allgemeine Java-Themen 9
N Runtime.getRuntime().exec Problem mit find Allgemeine Java-Themen 3
T Bluescreen bei Runtime.exec(); Allgemeine Java-Themen 8
I Runtime.getRuntime().exec Problem Allgemeine Java-Themen 4
N Runtime.exec() Exception Problem Allgemeine Java-Themen 3
N Runtime.exec() Allgemeine Java-Themen 7
truesoul Runtime.getRuntime().exec nebenbei ausführen Allgemeine Java-Themen 12
Z Runtime.getRuntime().exec-Problem Allgemeine Java-Themen 4
J Runtime.exec setzt Fokus auf Frame Allgemeine Java-Themen 2
V Probleme mit Runtime.exec() Allgemeine Java-Themen 3
M Runtime.exec() - Performance / Frage zu Threads Allgemeine Java-Themen 5
M Runtime.getRuntime().exec(cmd); auf windows ... Allgemeine Java-Themen 2
T Runtime.exec() Allgemeine Java-Themen 3
X Wann ist Runtime.getRuntime().exec mit Copy fertig? Allgemeine Java-Themen 10
G Output eines über Runtime.getRuntime.exec gestarteten Jars Allgemeine Java-Themen 6
N runtime.exec() Problem Allgemeine Java-Themen 6
W Runtime.getRuntime().exec() Allgemeine Java-Themen 10
lordcarlos Runtime exec und mplayer (linux) Allgemeine Java-Themen 11
C JApplet und Runtime.getRuntime().exec() Allgemeine Java-Themen 2
K Runtime.exec mit Timeout Allgemeine Java-Themen 5
0 Runtime.exec() VLC starten klappt nicht Allgemeine Java-Themen 9
G Runtime.exec - Prozess "mittendrin" "einfach Allgemeine Java-Themen 4
M Probleme Runtime.getRuntime().exec(Start.cmd); Allgemeine Java-Themen 10
F Problem mit Runtime.exec() Allgemeine Java-Themen 8
K Probleme mit Runtime.getRuntime().exec Allgemeine Java-Themen 6
A Runtime.getRuntime().exec mit Warte auf Beendigung - Wie? Allgemeine Java-Themen 7
R Problem mit Runtime.getRuntime().exec() Allgemeine Java-Themen 4
the[V]oid Ausführen von "javac" über Runtime.exec() Allgemeine Java-Themen 4
F Runtime.getRuntime().exec mit Linux und Leerzeichen Allgemeine Java-Themen 3
D runtime.exec --> Prozess hängt sich auf Allgemeine Java-Themen 7
T Runtime.exec -> Prozesskontrolle abgeben ? Allgemeine Java-Themen 11
B Probleme mit Runtime.getRuntime().exec("cmd.exe") Allgemeine Java-Themen 4
M Runtime.getRuntime().exec(txt_rsync_option.getText()); Allgemeine Java-Themen 12
M Rückgabewert von Runtime.getRuntime().exec() Allgemeine Java-Themen 2
S Runtime.exec() berechtigungen Allgemeine Java-Themen 5
S Runtime.exec und X Umgebung Allgemeine Java-Themen 2
F Shell-Programme per Runtime.exec() starten und mehr? Allgemeine Java-Themen 4
K Runtime.exec und DFÜ-Verbindung Allgemeine Java-Themen 5
D Problem mit Runtime.getRuntime().exec() Allgemeine Java-Themen 14
L Runtime.getRuntime.exec() Allgemeine Java-Themen 7
T Probleme mit Runtime.exec in Jar File Allgemeine Java-Themen 2
X Problem mit Runtime.getRuntime().exec("cls"); Allgemeine Java-Themen 18
S Runtime.getRunTime().exec("jar cvf .) hängt sich auf Allgemeine Java-Themen 3
M Runtime.getRuntime().exec() - Fehler abfangen Allgemeine Java-Themen 5
S dvbscan mit Runtime.getInstance().exec() ausführen ? Allgemeine Java-Themen 24
B Problem mit Runtime.getRuntime().exec() Allgemeine Java-Themen 4
G Runtime.getRuntime().exec("cmd /c START") Allgemeine Java-Themen 3
M Runtime.exec() => java.io.exception: too many open files Allgemeine Java-Themen 10
M this application requires a java runtime environment 1.8.0 Allgemeine Java-Themen 2
S Gibt es eine Moeglichkeit die Runtime Ausführung zu analysieren..? Allgemeine Java-Themen 7
J Verschiedene Runtime Versionen gleichzeitig? Allgemeine Java-Themen 12
K Threads Runtime und Process Probleme Allgemeine Java-Themen 3
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
J Probleme mit der Java-Runtime Allgemeine Java-Themen 10
D Java Objekt als Service in Runtime registrieren Allgemeine Java-Themen 1
W Threads Mit Thread und Runtime externe Programme öffnen Allgemeine Java-Themen 0
C Runtime Problem Allgemeine Java-Themen 1
P programm öffnen mit der runtime Allgemeine Java-Themen 9
W JavaDoc Runtime-Exceptions: Wie sinnvoll anzeigen? Allgemeine Java-Themen 14
P Runtime bzw. RAM-Auslastung eines Prozesses Allgemeine Java-Themen 9
M Befehl in Runtime ausführen der Eingabe benötigt Allgemeine Java-Themen 3
aze Jar ausführen über Runtime.execute funktioniert nicht Allgemeine Java-Themen 4
S Runtime Exceptions in eine Datei schreiben Allgemeine Java-Themen 7
N Internet Explorer mit bestimter Java Runtime starten Allgemeine Java-Themen 2
S Runtime.getRuntime()... Allgemeine Java-Themen 6
S Rückgabewert runtime Allgemeine Java-Themen 11
martin82 Java Runtime Update >17 - SwingWorker Änderungen? Allgemeine Java-Themen 7
W java ohne runtime Allgemeine Java-Themen 2
G Runtime? Allgemeine Java-Themen 3
S Problem mit Runtime. Allgemeine Java-Themen 2
E Programm mit der Runtime ausführen Allgemeine Java-Themen 8
M Runtime & Exception Allgemeine Java-Themen 3
J ServiceInterface - Runtime() > jemand eine idee? Allgemeine Java-Themen 2
A Runtime oder ProcessBuilder exe starten Allgemeine Java-Themen 3
V Java-Programm vom USB-Stick ohne Runtime-Installation Allgemeine Java-Themen 18
W In Runtime Output schreiben Allgemeine Java-Themen 5
J Probiert mal bitte aus (Thread + Runtime) Allgemeine Java-Themen 10
A Installierte Runtime ermitteln Allgemeine Java-Themen 3
T ausführbares jar File mit integriertem Java Runtime 6+JOGL Allgemeine Java-Themen 7
W Runtime Error216 Runtime error 217 Allgemeine Java-Themen 6
B Runtime Verzeichniss wechseln Allgemeine Java-Themen 8
C Java SE Runtime 6 Update 1 - IE 7 und FF 2.0 - Allgemeine Java-Themen 6
G Programm wird von java cmd runtime nicht aufgerufen? Allgemeine Java-Themen 13
A Runtime Process bricht nicht ab! Allgemeine Java-Themen 7
C Rechte unter WinXP, MySQL-Server per Runtime herunterfahren? Allgemeine Java-Themen 6
G Java Runtime Verzeichnis ermitteln Allgemeine Java-Themen 3
9 J2SE Runtime Environment 5.0 Allgemeine Java-Themen 6
G Runtime.getRuntime() Allgemeine Java-Themen 10
S Programm starten mit Runtime aktuelles Verzeichnis wechseln Allgemeine Java-Themen 7
M exec() funktioniert nicht Allgemeine Java-Themen 1
R Exec. Jar läd Bilder nicht! Allgemeine Java-Themen 5
S exec( "cmd /c") aber Konsole soll offen bleiben Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben