M
michi2
Gast
Ich habe folgende funktion zum kompilieren eines (java) Quellcodes geschrieben.
Leider spackt sie aber noch ein wenig...
Wie kann ich diese Verbessern (fehler beheben, Performence u. anderes)?
Danke!!!
Leider spackt sie aber noch ein wenig...
Wie kann ich diese Verbessern (fehler beheben, Performence u. anderes)?
Code:
final class Exec
{
String E_ausgabe = "";
String E_Befehl = "";
Process p2;
boolean b1 = false;
class Prozess extends Thread
{
public void run()
{
try
{
p2 = Runtime.getRuntime().exec(E_Befehl );
}
catch(java.io.IOException e){}
}
}
class Lesen extends Thread
{
public void run()
{
try
{
Thread.sleep(5000);
}
catch (InterruptedException e){}
p2.destroy();
BufferedReader in = new BufferedReader(new InputStreamReader(p2.getInputStream()) ); //Ausgaben des Compilers lesen
String s, s1;
try
{
while((s = in.readLine()) != null )
{
E_ausgabe = E_ausgabe + (s + "\n");
}
BufferedReader in2 = new BufferedReader(new InputStreamReader(p2.getErrorStream()) ); //Fehler des Compilers lesen
while((s1 = in2.readLine()) != null)
{
int i = s1.indexOf("error");
int l = s1.indexOf("errors");
if(i == -1 && l == -1)
{
E_ausgabe = E_ausgabe + (s1 + "\n");
}
else
{
E_ausgabe = E_ausgabe + (s1.substring(0, i));
if(l != -1)
{
E_ausgabe = E_ausgabe + ("Fehler");
E_ausgabe = E_ausgabe + (s1.substring(i + 6, s1.length()));
}
else
{
E_ausgabe = E_ausgabe + ("Fehler");
E_ausgabe = E_ausgabe + (s1.substring(i + 5, s1.length()));
}
E_ausgabe = E_ausgabe + ("\n");
}
}//Ende 'while'
} //Ende 'try'
catch (java.io.IOException IOEx){System.out.println("Fehler");}
b1 = true;
} //Ende 'run'
} //Ende 'Lesen'
public void compile(String m_dateiname,String compiler) throws IOException
{
if(System.getProperty("os.name").indexOf("Windows") > -1)
{
E_ausgabe = E_ausgabe + "cmd /c ";
E_Befehl = E_Befehl + "cmd /c ";
}
E_ausgabe = E_ausgabe + ( compiler + " " + "\"" + m_dateiname+ "\"");
E_Befehl = E_Befehl + ( compiler + " " + "\"" + m_dateiname+ "\"");
E_ausgabe = E_ausgabe + (":\n");
Prozess pr = new Prozess();
pr.start();
Lesen l = new Lesen();
l.start();
while(!b1)
{
try
{
Thread.sleep(500);
}
catch (InterruptedException e){}
}
}
public void interpret(String m_dateiname_Name, String m_dateiname_Path,String interpreter) throws IOException
{
String t_dateiname_Name = m_dateiname_Name.substring(0,m_dateiname_Name.length() - 5);
if(System.getProperty("os.name").indexOf("Windows") > -1)
{
E_ausgabe = E_ausgabe + "cmd /c ";
E_Befehl = E_Befehl + "cmd /c ";
}
E_ausgabe = E_ausgabe + (interpreter + " -classpath " + "\"" + m_dateiname_Path.substring(0,m_dateiname_Path.length() - 1) + "\"" + " " + t_dateiname_Name );
E_Befehl = E_Befehl + (interpreter + " -classpath " + "\"" + m_dateiname_Path.substring(0,m_dateiname_Path.length() - 1) + "\"" + " " + t_dateiname_Name );
E_ausgabe = E_ausgabe + (":\n");
Prozess pr = new Prozess();
pr.start();
Lesen l = new Lesen();
l.start();
while(!b1)
{
try
{
Thread.sleep(500);
}
catch (InterruptedException e){}
}
}
String getString()
{
return E_ausgabe ;
}
}
Danke!!!