Ich habe 2 Computer, der erste ist mein privater, da hab ich Administrator Rechte und schreibe das Programm darauf. Auf dem zweiten wird das Programm benötigt und wird per bat-file aufgerufen.
Auf dem ersten gibt es keine Probleme, auf dem zweiten erscheint folgende Meldung:
Kann mir jemand sagen was da das Problem ist? Irgendwo etwas mit replace, ich frage mich aber wieso, dass das nur auf dem zweiten PC passiert...
Hier noch der Code, ich weiss, ist viel und nicht grad so sehr ordentlich...
Auf dem ersten gibt es keine Probleme, auf dem zweiten erscheint folgende Meldung:
Exception in thread "main" java.lang.NoSuchMethodError; java.lang.string.replace
(Ljava/lang/CharSequence;Ljava/Lang/CharSequenceLjava/lang/String;
at Auswertung_v1_5.main(Auswertung_v1_5.java:36)
Kann mir jemand sagen was da das Problem ist? Irgendwo etwas mit replace, ich frage mich aber wieso, dass das nur auf dem zweiten PC passiert...
Hier noch der Code, ich weiss, ist viel und nicht grad so sehr ordentlich...
Code:
import java.io.*;
public class Auswertung_v1_4cut {
public static void main (String[] args) throws IOException{
byte zeichen;
String text = "";
// Wenn weitere Nummern benötigt werden muss bei Nummern die Nummer, falls National ohne Landesvorwahl
// und falls international mit Landesvorwahl oben bei nummern eingetragen werden.
// Der Name des Abos muss an gleicher Stelle, empfehlenswert ist die erste oder letzte, wie die
// zugehörige Nummer eingetragen werden.
String[]nummern={/*Zensur Enthält ca. 20 Nummern*/};
String[] abos = {/*Zensur Enthält die Abos zu den Nummern*/};
// Einlesen
String dateiName = "TSL_File_Fehlerhaft//Easy Liberty_Ost_Test Calls Quicktest V1corrupt"; // Dateiname, wird möglicherweise abgefragt
String eingaben = "";
String eingabenHolenVon = "X:\\XML\\tempCallroboter\\data.egal";
FileInputStream leseEingaben = new FileInputStream(eingabenHolenVon);
do{
zeichen = (byte)leseEingaben.read();
eingaben += (char)zeichen;
} while (zeichen !=-1);
// Das für Ordner um den letzten Versuch zu finden.
nummern[nummern.length-1] = "0" + eingaben.substring(0,eingaben.indexOf("<")).replace(" ","");
String xmlName = eingaben.substring(eingaben.indexOf("<")+1,eingaben.length()-1);
File f = new File("Y:/LOG/" + xmlName + "/" + xmlName + ".tsl");
if(!f.exists()){
System.out.println("Das Logfile konnte nicht gefunden werden");
}else{
int k = 0;
do{
k++;
f = new File("Y:/LOG/" + xmlName + "#" + k + "/" + xmlName + "#" + k + ".tsl");
}while(f.exists());
k--;
f = new File("Y:/LOG/" + xmlName + "#" + k + "/" + xmlName + "#" + k + ".tsl");
}
FileInputStream leseStrom = new FileInputStream(f);
do{
zeichen = (byte)leseStrom.read();
text += (char)zeichen;
} while (zeichen !=-1);
// Html-Datei mit Schreibzugriff
File ausgabedatei;
FileWriter fw;
BufferedWriter bw;
ausgabedatei = new File("Auswertung.html");
if(ausgabedatei.exists()){
System.out.println("Existiert bereits, wird überschrieben.");
}
fw = new FileWriter(ausgabedatei);
bw = new BufferedWriter(fw);
// Schreibe Beginn der Html-Datei
bw.write("<!DOCTYPE HTML PUBLIC\"-//W3C//DTD HTML 4.01 Transitional//EN\"");
bw.newLine();
bw.write("\"http://www.w3.org/TR/html4/loose.dtd\">");
bw.newLine();
bw.write("<html>");
bw.newLine();
bw.write("<head>");
bw.newLine();
bw.write("<style type=\"text/css\">");
bw.newLine();
bw.write("<!--");
bw.newLine();
bw.write("body {");
bw.newLine();
bw.write(" font-family: Calibri, Arial;");
bw.newLine();
bw.write(" text-align: center;");
bw.newLine();
bw.write("}");
bw.write("#datum {");
bw.newLine();
bw.write(" position:fixed;");
bw.newLine();
bw.write(" top:0px;");
bw.newLine();
bw.write(" right:5px;");
bw.newLine();
bw.write("}");
bw.newLine();
bw.write("-->");
bw.newLine();
bw.write("</style>");
//Dateiname analysieren
dateiName = dateiName.substring(dateiName.indexOf("//")+2,dateiName.indexOf("_Test Calls Quicktest"));
String abo = dateiName.substring(0,dateiName.indexOf("_"));
String ort = dateiName.substring(dateiName.indexOf("_")+1,dateiName.length());
bw.write("<title>Test mit " + abo + " in " + ort);
// Schreibe Html weiter
// Datum auslesen
int anfangDatum = text.indexOf("[RECORDS]")+11; // Suche Position
int endeDatum = text.indexOf("'")-9; // Suche Position
String datum = text.substring(anfangDatum,endeDatum); // Finde Position
String Tag = datum.substring(datum.indexOf("-")+1,datum.indexOf("-")+3); // Schneide Tag aus
Tag = Tag.replace("0", "")+"."; // Forme Tag um
String Monat = datum.substring(0,3); // Schneide Monat aus
// Ändere Monat in lange Schreibweise
String kurzMonate[] = {"Jan" ,"Feb" ,"Mar" ,"Apr" ,"May","Jun" ,"Jul" ,"Aug" ,"Sep" ,"Oct" ,"Nov" ,"Dez"};
String langMonate[] = {"Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"};
for(int i = 0; i < kurzMonate.length; i++){
if(Monat.equals(kurzMonate[i])){
Monat = langMonate[i];
break;
}
}
String Jahr = datum.substring(datum.lastIndexOf("-")+1,datum.lastIndexOf("-")+5); // Schneide Datum aus
datum = Tag + " " + Monat + " " + Jahr; // Flicke alles (wieder) zusammen
bw.write(" vom " + datum + "</title>"); // Gebe aus
// Html weiter
bw.newLine();
bw.write("</head>\n");
bw.write("<body>\n<center>\n");
bw.write("
<table cellspacing=\"0\" border=\"0\">\n");
bw.write("<tr>\n");
// Signalstärke
// String subrx = "";
if(text.indexOf("RX-Level: ")>0 && text.indexOf("dBm")>0){
String subrx = text.substring(text.indexOf("RX-Level: ")+10); //schneide den Teil nach "RX-Level: " ab
String Signalst = subrx.substring(0,subrx.indexOf("dBm")+3); //schneide alles nach "dBm" ab
bw.write("<td width=\"250px\" align=\"center\">Signalst&rke: " + Signalst+ "</td>\n");
// Location Area und Cell ID ermitteln
String lacstr = subrx.substring(subrx.indexOf("LAC: ")+7,subrx.indexOf("LAC: ")+11); // Lese Hexadezimalzahl LAC aus
int lac = Integer.parseInt(lacstr,16); // Wandle Hexadezimal in Dezimal
bw.write("<td width=\"250px\" align=\"center\">Location Area " + lac+ "</td>\n");
String cistr = subrx.substring(subrx.indexOf("CI: ")+6,subrx.indexOf("CI: ")+10); //Lese Hexadezimalzahl CI aus
int ci = Integer.parseInt(cistr,16); // Wandle Hexa in Dez
bw.write("<td width=\"250px\" align=\"center\">Cell ID " + ci + "</td></tr>\n");
int bsc = (ci - 60002)/10;
// Namen der BSC in (aus Faulheit) etwas kürzerer Form
String[] bscNrArr = {"1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","36","37","38","39","40","41","42","43"};
String bscNr = bscNrArr[bsc-1];
String zellName;
if(bsc<36){
zellName = "C0" + bscNr + "29D";
}else{
zellName = "C" + bscNr + "29D";
}
bw.write("<td colspan=\"3\" align=\"center\">Ausgeführt im BSC-" + bscNr + " in der Zelle " + zellName + ".</td></tr>\n</table>\n\n");
}else{
bw.write("<td width=\"750px\" align=\"center\">Fehler beim Auslesen von Signalstärke, LAC, CellID und BSC.</td></tr>\n</table>\n\n");
}
// Simnr ermitteln
if(text.indexOf("Call_Roboter_Chur_SIM_Nr_")>0){
String simnrteil = text.substring(text.indexOf("Call_Roboter_Chur_SIM_Nr_")+25,text.indexOf("Call_Roboter_Chur_SIM_Nr_")+35); // Schneide alles vor Call_Roboter_Chur_SIM_Nr_ ab
String simnr = simnrteil.substring(0,simnrteil.indexOf(",")); // Schneide ende ab, inklusive ",", die Simnr bleibt übrig
int simint;
simint = Integer.parseInt(simnr);
// Lese Abo dieser Sim aus
String simAbos[] = {"CMN","Liberty","Budget","Business","Swiss","Easy Liberty","FL Business","FL Swiss","FL Private"};
bw.write("
Durchgeführt mit "+simAbos[simint-1]+".
\n");
}else{
bw.write("
SIM konnte nicht identifiziert werden, vrmtl. ausgeführt mit " + abo + ".
\n");
}
bw.write("</table>\n\n");
// Nummersuche und Ausgabe
boolean geklappt;
int mmsok = 0;
int mmsfail = 0;
int callok = 0;//Zählvariable Calls ok
int callfail = 0;//Zählvariable Calls fail
boolean call; //Bei true Call und bei false SMS
int smsok = 0;//Zählvariable SMS ok
int smsfail = 0;//Zählvariable SMS fail
String okay = ""; //Geglückte Versuche, wird in Html erfasst
String fail = ""; //Fehlgeschlagene Versuche, wird in Html erfasst
String aktAbo = ""; //Auktuelles Abo
boolean combox;
boolean bgok = true;
boolean bgfail = true;
String nummer = "";
String kurzNummer = ""; //Gekürzte Nummer
// Nummern und deren Abos
do {
call = text.indexOf("Called") < text.indexOf("SMS Destination") && text.indexOf("Called")>0; //lese aus ob der nächste ein Call oder eine SMS ist.
if(text.indexOf("Called")>0 && text.indexOf("SMS Destination")<1){
call = true;
}
if(call){
// bei call
nummer = text.substring(0,text.indexOf("Called")-1);
text = text.substring(text.indexOf("Called")+20);
}else{
if(text.indexOf("SMS Destination")-1>0){
// bei SMS
nummer = text.substring(0,text.indexOf("SMS Destination")-1);
text = text.substring(text.indexOf("SMS Destination"));
}else{
if(text.indexOf("Called")<=0){break;}
}
}
nummer = nummer.substring(nummer.lastIndexOf(";")+1,nummer.length());
kurzNummer = nummer.replace(" ","").replace("+41", "0");
combox = kurzNummer.substring(0,3).equals("086");
if(kurzNummer.charAt(0)==0){
if(combox){
//combox
nummer = "+41 " + kurzNummer.substring(1,3) + " " + kurzNummer.substring(3,6) + " " + kurzNummer.substring(6,9) + " " + kurzNummer.substring(9,11) + " " + kurzNummer.substring(11,13);
}else{
//keine combox
nummer = "+41 " + kurzNummer.substring(1,3) + " " + kurzNummer.substring(3,6) + " " + kurzNummer.substring(6,8) + " " + kurzNummer.substring(8,10);
}
}
for(int i = 0; i < nummern.length;i++){
if(nummern[i].equals(kurzNummer)){
aktAbo = abos[i];
break;
}
}
if(text.indexOf("PASS")<0){
geklappt = false;
}else{
geklappt = text.indexOf("PASS")<text.indexOf("FAIL") && text.indexOf("FAIL")>0;
}
if(geklappt){
if(bgok){
okay = okay + "<tr><td>";
bgok = false;
}else{
okay = okay + "<tr bgcolor=\"#ccffcc\"><td>";
bgok = true;
}
if(call){
if(text.indexOf("MMS")>text.indexOf("Called") && text.indexOf("MMS")<text.indexOf("PASS")){
okay = okay + "MMS";
mmsok++;
}else{
callok++;
okay = okay + "Call";
}
}else{
smsok++;
okay = okay + "SMS";
}
okay = okay + "</td><td>" + nummer + "</td><td>" + aktAbo + "</td></tr>\n";
}else{
if(bgfail){
fail = fail + "<tr><td>";
bgfail = false;
}else{
fail = fail + "<tr bgcolor=\"#ffcccc\"><td>";
bgfail = true;
}
if(call){
if(text.indexOf("MMS")>text.indexOf("Called") && text.indexOf("MMS")<text.indexOf("PASS")){
fail = fail + "MMS";
mmsfail++;
}else{
callfail++;
fail = fail + "Call";
}
}else{
smsfail++;
fail = fail + "SMS";
}
fail = fail + "</td><td>" + nummer + "</td><td>" + aktAbo + "</td></tr>\n";
}
}while(text.indexOf("Called") >= 0 || text.indexOf("SMS Destination") >= 0);
bw.write("<div id=\"datum\">"+datum+"</div>");
bw.write("
\n<table bgcolor=\"#cccccc\" cellspacing=\"0\" cellpadding=\"20\" border=\"0\">\n<tr>\n<td>\n<table cellspacing=\"0\" border=\"0\">\n<tr>\n<th colspan=\"4\">Kurzübersicht</th>\n</tr>\n<tr>\n<td>Calls</td>\n<td align=\"right\">"+callok+"</td>\n<td>von</td>\n<td align=\"right\">"+(callok+callfail)+"</td>\n</tr>\n");
bw.write("<tr>\n<td>SMS</td>\n<td align=\"right\">"+smsok+"</td>\n<td>von</td>\n<td align=\"right\">"+(smsok+smsfail)+"</td>\n</tr>\n</td>\n</tr>\n");
if((mmsok+mmsfail)>0){
bw.write("<tr>\n<td>MMS</td>\n<td align=\"right\">"+mmsok+"</td>\n<td>von</td>\n<td align=\"right\">"+(mmsok+mmsfail)+"</td>\n</tr>\n</table>\n</td>\n</tr>\n</table>\n
\n\n");
}
bw.write("</table>\n</td>\n</tr>\n</table>\n
\n\n");
bw.write("<table cellspacing=\"0\" cellpadding=\"20\" border=\"0\">\n<tr valign=\"top\">\n<td bgcolor=\"#ff9999\" align=\"center\">[b]Fehlgeschlagen[/b]
\n<table border=\"0\" cellspacing=\"0\">\n<tr bgcolor=\"#ffcccc\"><th width=\"50px\">Test</th><th width=\"150px\">Nummer</th><th width=\"200px\">Gewählt</th></tr>\n");
bw.write(fail);
bw.write("</table>\n</td>\n\n<td bgcolor=\"#99ff99\" align=\"center\">[b]Geklappt[/b]\n
<table border=\"0\" cellspacing=\"0\">\n<tr bgcolor=\"#ccffcc\"><th width=\"50px\">Test</th><th width=\"150px\">Nummer</th><th width=\"200px\">Gewählt</th></tr>\n");
bw.write(okay);
bw.write("</table></table>\n\n\n</center>\n</body>\n</html>");
bw.close();
System.out.println("Datei geschrieben.");
}
}