Archiv verlassen und diese Seite im Standarddesign anzeigen : Java - Externes Programm ausführen
hi,
ich möchte etwas aus meinem java-programm compilierenm darum suche sowas wie system() in C++, wenns aber sowas wie javac() oder compiler() gibt isdas auch ok :)
anda_skoa
22-05-2003, 17:51
java.lang.Runtime
Ciao,
_
peschmae
22-05-2003, 18:31
das forum hat übrigens auch eine Suchfunktion...
MfG Peschmä
siehe z.B.
http://www.mrunix.de/forums/showthread.php?s=&threadid=31301
mfg
maceop
peschmae
23-05-2003, 11:03
unglaublich, so nett bin ich niiiiiie :D
MfG Peschmä
Process javac = Runtime.getRuntime().exec("javac irgendwas.java");
würde das so gehen?
peschmae
23-05-2003, 13:08
eksakt
unter Win gibts manchmal ein bissserl probleme
den Stout/stderr wie im gelinkten thread angegeben auslesen...
MfG Peschmä
dumme n00b frage, aber: Windows hat stdout/stdin/stderr?
peschmae
23-05-2003, 16:19
ja,
(schliesslich war ja dos nichts anderes als eine schlecht abgekupferte Unix-Shell)
MfG Peschmä
muss ich die auslesen oder gehts auch ohne?
anda_skoa
23-05-2003, 18:03
Musst du nicht.
Ciao,
_
peschmae
23-05-2003, 18:05
probiers doch mal aus :o
Nein, musst du nicht, möchtest du aber vielleicht, um herauszufinden, ob das compilen erfolgreich war bzw wie die Fehlermeldung heisst...
einen Erfolg/Misserfolg findest du übrigens über "Process.exitValue()" heraus (0 heisst kein problem)
MfG Peschmä
also wenn jetzt
Process javac = Runtime.getRuntime().exec("javac irgendwas.java");
erfolgreich ist, dann javac.exitValue().equals("0") oder wird das nicht als string ausgegeben?
peschmae
24-05-2003, 06:47
natürlich int, was denn sonst?
Wenn du schon Java programmieren willst, dann besorg dir doch bitte die Apidoc von sun :D
http://java.sun.com/j2se/1.4.1/docs/api/java/lang/Process.html
MfG Peschmä
ich hab nochmal eine frage, hat aber nichts mit dem ausführen zutun:
/* ... */
import java.io.*;
import java.util.*;
public class yaceinstaller
{
BufferedReader br;
String p;
String oSys;
Hashtable fileHash;
public static void main(String args[])
throws IOException
{
/* ... */
System.out.println("Gib den Pfad zu Java an (z.B. /usr/java/j2sdk1.4.1)");
String javadir = br.readLine();
makeFileHash();
System.out.println(fileHash.get("1").toString());
}
public static void makeFileHash()
{
Hashtable fileHash = new Hashtable();
fileHash.put("1","1.java");
fileHash.put("2","2.java");
fileHash.put("3","3.java");
}
}
von javac bekomm ich das:
yaceinstaller.java:62: non-static variable winFileHash cannot be referenced from a static context
System.out.println(fileHash.get("1").toString());
^
1 error
ich versteh den fehler nicht so richtig, kann mir da mal jemand helfen?
anda_skoa
24-05-2003, 15:17
Deine beiden Methoden sind static, die Variablen der Klasse nicht.
Ciao,
_
peschmae
24-05-2003, 16:06
also etwa so:
/* ... */
import java.io.*;
import java.util.*;
public class yaceinstaller
{
private BufferedReader br;
private String p;
private String oSys;
private Hashtable fileHash;
yaceinstaller() {
try {
/* ... */
System.out.println("Gib den Pfad zu Java an (z.B. /usr/java/j2sdk1.4.1)");
String javadir = br.readLine();
makeFileHash();
System.out.println(fileHash.get("1").toString());
}
catch(IOException e) { System.out.println(e);}
}
private void makeFileHash()
{
Hashtable fileHash = new Hashtable();
fileHash.put("1","1.java");
fileHash.put("2","2.java");
fileHash.put("3","3.java");
}
public static void main(String args[])
{
new yaceinstaller();
}
}
MfG Peschmä
P.S. was hast du denn für ein komisches Java-Lehrbuch :confused:
du kannst nicht in der javadoch nachschauen :p, weisst nicht was static heisst, etc
dafür weisst du schon, dass man Strings nur mit .equals und nicht mit == vergleichen kann...
da komme ich nicht mit :D
anda_skoa
24-05-2003, 16:11
Original geschrieben von peschmae
also etwa so:
Bischen mehr Mühe kannst du dir schon geben.
br ist nicht initialisiert und makeFileHash arbeitet mit einer lokalen Variable statt mit der der Instanz.
Ciao,
_
peschmae
24-05-2003, 17:56
Original geschrieben von anda_skoa
br ist nicht initialisiert und makeFileHash arbeitet mit einer lokalen Variable statt mit der der Instanz.
aus dem Original unbesehen übernommen :(
allerdings fällt br imho unter das /* ... */ d.h. wird vermutlich dort initialisiert
fileHash ist mir allerdings tatsächlich durch die Lappen gegangen :D
MfG Peschmä
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
:)
makeFileHash arbeitet mit einer lokalen Variable statt mit der der Instanz.
-
fileHash ist mir allerdings tatsächlich durch die Lappen gegangen
soll ich da was änderd?
anda_skoa
24-05-2003, 18:32
Original geschrieben von Giuly
soll ich da was änderd?
Kommt drauf an, ob du den Hashtable in der Klasse füllen willst, oder nur den in der Funktion.
Wenn ersteres, ja, wenn letzeres, nein :)
Ciao,
_
anda_skoa
24-05-2003, 18:32
Original geschrieben von peschmae
allerdings fällt br imho unter das /* ... */ d.h. wird vermutlich dort initialisiert
Ah, das hab ich übersehen :D
Ciao,
_
peschmae
25-05-2003, 08:06
gleich zwei Fehler aufs Mal wäre schon ein bisschen viel gewesen :p
MfG Peschmä
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.