ERLEDIGT
NEIN
NEIN
ANTWORTEN
17
17
ZUGRIFFE
1293
1293
EMPFEHLEN
-
Hi
ich möchte ein Programm schreiben, welches andere Java-Programme startet. Ich habe schon überlegt dies so zu machen:
Code java:1
Runtime.getRuntime().exec("cmd.exe "+startargumente);
allerdings haperts schon bei den Startargumenten.
Ich habe das mal manuell in der cmd.exe versucht:aber schon da bekomme ich den FehlerCode :1
java <Pfad zur Klasse, wo main drin ist>
Code :1
Exception in thread "main" java.lang.NoClassDefFoundError: <Pfad>
Ziel ist es, die class-Dateien von den Programmen auszuführen, indem ich den Pfad der Dateien an cmd.exe sende. Weiß jemand was ich falsch mache?
MfG thomyHier kommt der Genuss!
-
Zum Beispiel, dass cmd keine Class-Dateien starten kann?
Ausführen musst du das ganze über java.exe.
Desweiteren wirst du ein Problem mit verschiedenen Ordnerstrukturen usw. haben. Evtl. ist es erst erforderlich in ein bestimmtes Verzeichnis über den Ordnern zu wechseln, um das Programm mit dem richtigen Class-Path starten zu können.Versuche nie Probleme zu lösen, von deren Existenz du noch gar nichts weißt!
-
-
Naja, cmd.exe verwende ich ja nur um java.exe zu starten.
Und müsste das mit den Ordnungstrukturen nicht egal sein, wenn ich den absoluten Pfad der java.exe übergebe?
edit:
Habe das jetzt mit dem Processbuilder probiert, aber es passiert nichts:
Code java:1 2
ProcessBuilder pb = new ProcessBuilder("java","D:\\start1\\start.class") ; pb.start();
Geändert von thomy800 (20.05.08 um 17:15 Uhr)
Hier kommt der Genuss!
-
Leider nein, die Abhängigkeiten der Klassen untereinander ist relativ, darum kommt es auf das Verzeichnis an, in dem du dich gerade befindest, während du das ausführst.Und müsste das mit den Ordnungstrukturen nicht egal sein, wenn ich den absoluten Pfad der java.exe übergebe
So hat es sich zumindest immer bei mir dargestellt - lasse mich gerne eines besseren belehren.
Und wenn schon cmd.exe dann cmd /c - startet ein Konsolenfenster, dass sich gleich wieder nach Ausführen des Befehls schließt. Das ist aber unnötig, du kannst auch direkt java.exe ansprechen.Versuche nie Probleme zu lösen, von deren Existenz du noch gar nichts weißt!
-
Ok, ich seh jetzt gar nicht mehr durch

Also, ich habe den <Pfad a> wo meine momentane <class start> ausgeführt wird. Diese soll nun die <class exc> starten, welche sich bei <Pfad b> befindet. Wie sähe nun der Befehl, der in <class start> steht, aus?Hier kommt der Genuss!
-
Versuch das:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
package de.tutorials; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class JavaApplicationStart { private static void startJavaApplication(File execDir, String mainClass) { ProcessBuilder b = new ProcessBuilder("java", mainClass); b.directory(execDir); b.redirectErrorStream(true); try { // Starten final Process p = b.start(); // Ausgabe lesen final InputStream processOutput = p.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader( processOutput)); String line; while ((line = br.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { // Starte die Klasse de.tutorials.HelloWorld im Ausführungsverzeichnis // bin startJavaApplication(new File("bin"), "de.tutorials.HelloWorld"); } }
Code java:
Gibt bei mir wie gewünscht aus:
Hello World
-
Ich weiß nicht, was ich falsch mache...
ich habe diese beiden Quelltexte kopiert, einen Order "bin" im Verzeichnis erstellt, wo auch die beiden Klassen sind und trotzdem kommt der Fehler:
Code :1 2
java.lang.NoClassDefFoundError: HelloWorld Exception in thread "main"
Geändert von thomy800 (20.05.08 um 18:09 Uhr)
Hier kommt der Genuss!
-
Ordnerstruktur in bin muß der Packagestruktur entsprechen:
bin
- de
--- tutorials
----- HelloWorld.class
-
test
--JavaApplicationStart.class
--bin
---- de
-------- tutorials
------------- HelloWorld.class
und zusätzlich
--de
-----tutorials
------HelloWorld.class
und trotzdem:Code :1 2
java.lang.NoClassDefFoundError: de/tutorials/HelloWorld Exception in thread "main"
Aber JavaApplicationStart muss nicht in bin sein, oder?Hier kommt der Genuss!
-
Tu mal folgendes:
Code java:
Dann siehst du wo er versucht bin zu finden!
-
also bin findet er:
und wenn bin nicht gefunden wird, gibts den Fehler:.../test/bin
also nehm ich mal an, dass das Problem irgendwo bei HelloWorld liegt...java.io.IOException: CreateProcess: java de.tutorials.HelloWorld error=267
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
at java.lang.ProcessImpl.start(ProcessImpl.java:30)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:451)
at JavaApplicationStart.startJavaApplication(JavaApplicationStart.java:37)
at JavaApplicationStart.main(JavaApplicationStart.java:78)
at __SHELL2.run(__SHELL2.java:7)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at bluej.runtime.ExecServer$3.run(ExecServer.java:792)Hier kommt der Genuss!
-
Hast du es so genommen wie ich es gepostet habe und kompiliert?
-
jap, 100%ig kopiert
Hier kommt der Genuss!
-
Irgendwas wirst du ja falsch machen.... entweder du suchst selber weiter oder du schreibst hier mal ganz genau was du in welcher Reihenfolge gemacht hast.
Ähnliche Themen
-
.class Dateien per Doppelklick ausführen
Von frager im Forum JavaAntworten: 8Letzter Beitrag: 28.07.09, 17:48 -
Java Class von JFrame aus ausführen?
Von Tobias Feld im Forum JavaAntworten: 2Letzter Beitrag: 15.04.09, 06:01 -
Class zu Java-Dateien decompilieren?
Von Sebastian29 im Forum JavaAntworten: 4Letzter Beitrag: 18.04.08, 18:39 -
2 class dateien verknüpfen
Von Schatti im Forum JavaAntworten: 4Letzter Beitrag: 14.10.03, 15:02 -
Class Dateien
Von BomberJack im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 20.07.01, 21:44





Zitieren

Login





