Shellskript vom Javaprogramm auf AIX aufrufen

lafou1

Mitglied
Hallo,


ich möchte ein Shellscript von einem Java-Programm auf AIX-Plattforn aufrufen.
das geht leider nicht auf AIX ,obwohl ich den Skript mit dem Befehl ". /shell "in der Konsole aufrufen kann.
wenn ich das vom Programm aufrufe :
Process p = Runtime.getRuntime().exec( ". /shel" ) ;

bekomme ich IOEXception: . not found

hat jemand ein Idee,wie ich das Problem lösen kann
Gruss
 
Hallo!

Du musst schon den absoluten Pfad zum entsprechenden Shell Skript angeben.
Relative Pfadangaben sind immer Relativ zu:
Code:
 System.out.println(new File("").getAbsolutePath());
Bzw. zu dem Verzeichnis aus dem der Java Launcher aufgerufen wurde.

Gruss Tom
 
Hi,
auch wenn ich den absulten Pfad eingebe, funktioniert das nicht.
wenn ich kein leerzeichen zwischen den Punkt und bckslash lasse,bekomme keine fehler aber den Skript wird nicht ausgeführt,und wenn ich einen leerzeichen dazwichen lasse,bekomme ich IOException zurück. ". not found".
Code:
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class main {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		Process d = Runtime.getRuntime().exec("./usernet/user1/shellwarper");
		BufferedReader in = new BufferedReader(new InputStreamReader(d.getInputStream()));
		for (String s; (s = in.readLine()) != null;               )
			System.out.println(s);
		
	

	}

}
Gruss
 
Zuletzt bearbeitet von einem Moderator:
Hi.

Wenn du einen absoluten Pfad angibst, bedeutet das das vorne kein Punkt sein darf.

Gruß

PS: Benutze bitte die code Tags.
 
Hi,
Das Problem wurde gelöst,es lag an komischen Zeichen in Shellskript ,die automatisch vom Editor hinzugefügt wurden.
Den Shellskript wird nur dann gefunden,wenn das Shellscript in selben Ordner wie die aufrufende Klasse liegt, Aber ich will den Shellskript von einer Klasse in einem Eclipse-Plugin aufrufen,wo soll den Skript liegen.....?Ich hab den Skript in alle mögliche Ordnern kopiert (Den selben Ordner wie die Klasse, in Hauptordner meiner Plugin ) , aber das ging nicht, kann mir jemand sagen,was ich falsch mache?
Code:
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class main {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		Process d = Runtime.getRuntime().exec("./shellwarper");
		BufferedReader in = new BufferedReader(new InputStreamReader(d.getInputStream()));
		for (String s; (s = in.readLine()) != null;               )
			System.out.println(s);
		
	

	}

}
viele Grüsse
 
lafou1 hat gesagt.:
Den Shellskript wird nur dann gefunden,wenn das Shellscript in selben Ordner wie die aufrufende Klasse liegt, Aber ich will den Shellskript von einer Klasse in einem Eclipse-Plugin aufrufen,wo soll den Skript liegen.....?Ich hab den Skript in alle mögliche Ordnern kopiert (Den selben Ordner wie die Klasse, in Hauptordner meiner Plugin ) , aber das ging nicht, kann mir jemand sagen,was ich falsch mache?
Du verwendest eine relative Pfadangabe (der Punkt-Schrägstrich Teil von dem String im exec Aufruf). Deswegen wird das Shellskript auch nur gefunden wenn es im gleichen Verzeichnis liegt wo der Java Prozess gestartet wurde.

Du kannst aber auch einen absoluten Pfad angeben. (wie bereits mehrfach vorgeschlagen wurde)
Code:
Runtime.getRuntime().exec("/home/skripte/shellwarper");

Gruß
 
Hallo,

Du verwendest eine relative Pfadangabe (der Punkt-Schrägstrich Teil von dem String im exec Aufruf). Deswegen wird das Shellskript auch nur gefunden wenn es im gleichen Verzeichnis liegt wo der Java Prozess gestartet wurde.

Ich hab den Skript in gleichen Verzeichnis angelegt, deshalb wird es gefunden.
aber eigentlich ruf ich den Shell-Skript von einer PluginSWTKlasse auf.
Den Skript wird gefunden, aber werft dasProgramm eine Exception aus:
Code:
org.eclipse.swt.SWTException: Invalid thread access

Hat jemand eine Idee?

Gruss
 
Zurück