String-Manipulation beim Ablauf in Eclipse und als JAR-File

Diskutiere String-Manipulation beim Ablauf in Eclipse und als JAR-File im Allgemeine Java-Themen Bereich.
T

Tueftler

Hallo zusammen,
woran kann es liegen, wenn in der JAR mit identischem Code andere String-Teile extrahiert werden, als in der IDE? Hab mal eine Umwandlung des Strings ins UTF8-Format probiert, bringt aber nichts.
Hier der Code:
Code:
        Scanner scanner = new Scanner(new URL(url).openStream());
        while(scanner.hasNextLine()){
            string+=scanner.nextLine();
        }
        scanner.close();
        //string=convertToUTF8(string);
        if(string.contains("Error 404"))throw new Exception();
        String wort=null;
        for(int i=0;i<25;i++) {
            wort="";
            int beginn=string.indexOf("data-default=");
            beginn+=14;
            string=string.substring(beginn);
            int ende=string.indexOf("\"");
            wort=string.substring(0,ende);
            formen.add(wort);
        }

public static String convertToUTF8(String s) {
        String out = null;
        try {
            out = new String(s.getBytes("UTF-8"), "ISO-8859-1");
        } catch (java.io.UnsupportedEncodingException e) {
            return null;
        }
        return out;
    }
 
Zuletzt bearbeitet:
T

Tueftler

Kennzeichnet die URL vielleicht in der IDE ein anderes Ziel?
Wie gesagt, der Code ist gleich, ebenso die variable "url". Die url spricht eine Website an, hinter der ein Server hängt. Der ändert die Website. Dieser Stream (der Response des Servers) landet ja normalerweise in einem Web-Browser. Ich hol den aber mit Scanner in meinen String. Klappt unter Eclipse auch alles wunderbar. Bei meiner Spurensuche bin ich drauf gekommen, dass sich die Länge des Strings unterscheidet: In der jar ist die Länge um 1/4 kürzer als in Eclipse. Aber warum?
 
N

Neumi5694

Da es hier um Zeichensätze geht ... einen möglichen Unterschied gibt's bei der Quelle deiner Strings, bzw. wo dein Programm läuft.
Die Windows Command Line (bzw. Batch-Dateien) arbeitet z.B. mit ISO850, eine Windows-Verknüpfung nutzt hingegen ANSI.

Folge aber erst mal dem Tip mit dem Ausgeben der Strings, um zu sehen, was Sache ist.
 
T

Tueftler

Hab mal den Tipp mit der Stringausgabe befolgt und das hat mich in der Tat ein kleines Stück weitergebracht:
Die Adresse der angesteuerten Site ist so aufgebaut: https://anbieter/gr/suchwort
Das Suchwort kann man auch händisch über ein input-Feld in der site eingeben und die Ausgabe mit return bewirken. In der IDE verwende ich die Adresse wie oben genannt. In der jar-Version aber bekomme ich den Inhalt der https://anbieter/gr und die hat weder eine Eingabe- noch eine Ausgabemaske.
 
N

Neumi5694

Hast du denn schon überprüft, ob die URL, die du schickst, die richtige ist?
Probier's gegebenenfalls auch mal hardcodiert ohne Scanner.
 
T

Tueftler

Problem gelöst!
Stimmt, es lag an der URL, genauer gesagt an dem Suchwort, dem letzten Teil des URL-Strings. Da der in griechischen Buchstaben geschrieben war und die Character-Werte oberhalb von 900 haben, braucht der ein Encoding UTF 8. In Eclipse hab ich das nicht gemerkt, da für die ganze IDE UTF 8 eingestellt war. Offensichtlich geht diese Einstellung beim Erstellen der jar verloren.
In der java api steht bei URL darüber hinaus fürs Encodieren die Empfehlung nicht direkt die Klasse URL zu verwenden, sondern zunächst ein Objekt der Klasse URI zu erstellen und das mit der Methode toURL in eine url umzuwandeln. So sehen die wichtigen Zeilen nun in meinem Code aus, der auch in der jar-Version einwandfrei läuft:

Code:
// greek = Variable mit griechischen Buchstaben, das zu suchende Wort
uri = new URI("https://cooljugator.com/gr/"+URLEncoder.encode(greek, "UTF-8"))

url=uri.toURL();

BufferedReader leser;
String line;
leser= new BufferedReader(new InputStreamReader(url.openStream(),"UTF-8"));
while ((line = leser.readLine()) != null)strIn+=line;
 
krgewb

krgewb

-.- Du hast kein einziges Mal erwähnt, dass du mit griechischen Buchstaben arbeitest.
Naja, eigentlich hätte ich es wissen müssen wegen deinem anderen Thread.
 
Thema: 

String-Manipulation beim Ablauf in Eclipse und als JAR-File

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben