BufferedReader oder Prozess, wer hängt sich auf?

Status
Nicht offen für weitere Antworten.
T

Tuttle

Gast
Hallo, ich habe ein Problem!
Ich möchte in Java über einen externen Prozessaufruf verschiedene RaR-Dateien, die Passwortverschlüsselt sind, entpacken.
Das ganze klappt auch in den meisten Fällen.
Nur in seltenen Ausnahmefällen hängt sich der ganze Schrunz aus für mich nicht erklärbarer Ursache auf. Für Hilfe wäre ich dankbar. Normalerweise werden Parameter wie Passwort usw. vom Benutzer eingegeben, aber zur Vereinfachung habe ich hier ein kleines Beispielprogramm getestet, welches den Fehler nachvollziehen lässt:
Code:
public class Test {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        Process p = Runtime
                .getRuntime()
                .exec(
                        "C:\\Programme\\WinRAR\\UnRAR.exe e -p\"^^^^!7\" -or c:\\test.rar c:\\");
        BufferedReader in = new BufferedReader(new InputStreamReader(p
                .getInputStream()));
        String s;
        while ((s = in.readLine()) != null) {
            System.out.println(s);
        }
        in.close();
    }
}

Den InputStream benötige ich natürlich zur Auswertung, wenn der User bspw. ein falsches Passwort eingegeben hat. Bein einigen Passwörtern bleibt das Programm aber einfach bei einem der wiederholten Aufrufe von "in.readLine()" hängen, es passiert einfach gar nix mehr.
Gebe ich im Parameter als Passwort statt "^^^^!7" aber "^^^^!6" mit, funktioniert alles, wie es soll (obwohl beide Passwörter FALSCH sind). Es sind nur wenige Passwörter, die diesen Fehler hervorrufen.
Für Hinweise wäre ich dankbar.
 
T

Tuttle

Gast
Hallo,

also den Fehler habe ich nicht direkt beheben können, für Hinweise oder Ideen in der Richtung wäre ich nach wie vor sehr dankbar. Ursache scheint aber die UnRAR.exe zu sein, die bei Eingabe bestimmter Passwörter sehr kryptische Ausgaben liefert, die den BufferedReader scheinbar überfordern und mehr oder weniger aufhängen (vermutlich auf irgendwas wartend). (Übrigens zählt auch "11111O" zu diesen Passwörtern, die das Programm anhalten, obwohl es sich ja wirklich um ein Passwort ohne Sonderzeichen handelt.)

Den Fehler umgehen konnte ich jetzt zumindest, indem ich statt "p.getInputStream()" nur "p.getErrorStream()" aufrufe. Der liefert mir hinreichende Ergebnisse und es hängt sich nichts mehr auf.
 

sliwalker

Top Contributor
hoi,

einfach mal ins blaue geschossen...
...da Du nicht auf das entpacken wartest, kann es ungewöhnliche Auswirkungen haben. ich würde mal ein waitFor probieren. und danach den inputstream lesen.

Verstehts worauf ich hinaus will?

greetz
SLi
 
T

Tuttle

Gast
Danke erstmal für den Hinweis.
waitFor() hatte ich tatsächlich schonmal drin, ändert aber auch nicht viel. Die ganze Anwendung bleibt dann nicht mehr am readLine() hängen, sondern direkt am waitFor(). Prinzipiell hatte ich den Fehler bisher auch nur bei der Eingabe falscher Passwörter, eine langer Entpackvorgang sollte also nicht stattfinden.
Das merkwürdige ist ja tatsächlich, dass das Problem scheinbar vom eingegeben Passwort abhängt und nur bei einigen wenigen Passwörtern passiert, bei den meisten aber problemlos durchläuft.
 

sliwalker

Top Contributor
Hoi,

haste den Befehl auch mal per Copy and Paste in die Console(DOS) übertragen und geguckt was der aus Deinen Passwörtern macht?
Käme mir als Idee noch...

Oder dass Du das Passwort als Parameter noch irgendwie mit ner Zusatzoption angeben musst um KA Sonderzeichen machen zu können oder so?

greetz
SLi
 
T

Tuttle

Gast
Habe ich alles probiert. Das eigentliche Problem liegt auch offensichtlich bei WinRAR.
Wenn man den Befehl mit einem dieser betroffenen Passwörter in die Konsole tippt, kommt zwischen den normalen Meldungen, wie sie gewöhnlich kommen sollten und bei den meisten eingegebenen Passwörter auch kommen, noch jede Menge merkwürdig kryptischer Code, sieht in etwa so aus:

UNRAR 3.71 freeware Copyright (c) 1993-2007 Alexander Roshal

bÖÖEz¨0m~Ï(+Ät¡:)@¦`ól帣3;Ýß,£±>-óm§-ó&7P∟¦ôÝ(ÐwTÆ-ë¯GÕcP¤áQ¥}♣VäKS+¯Y´Ä2+Þ↔
ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓
ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓
ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓
ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓
ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓
ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓
ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓
ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓
ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓
ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓
ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓
ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3↓ï+ºB0∟Ú0▼¯lÛ¯¯3 - der Dateikopf
ist zerstört.
Verschlüsselte Datei: CRC-Fehler in c:\\test.rar (Falsches Passwort?).
Keine Dateien zum Entpacken.

Selbst wenn man das normale WinRAR startet, bekommt neben den üblichen Meldungen diesen kryptischen Code.
Insofern habe ich da mittlerweile auch nur noch wenig Hoffnung, insbesondere von Java-Seite noch echte Lösungsmöglichkeiten zu finden.
Ich vermute jetzt, dass aufgrund dessen auch der betroffene InputStream defekt von der Anwendung geliefert wird und deshalb in der Java-Anwendung hängen bleibt. Was mir noch theoretisch einfallen würde, dass man eben von JAVA-Seite erkennt, dass es nicht weiter geht bzw. der Stream defekt ist und entsprechend wenigstens überhaupt darauf reagieren kann und nicht einfach stehen bleibt. Ob und wie das möglich ist, weiß ich aber leider nicht.
 
T

Tuttle

Gast
Achso, am Passwort bzw. den darin enthaltenen Zeichen selbst sollte es eigentlich auch nicht liegen, weil es wirklich nur scheinbar wahllose Passwörter betrifft, unabhängig davon, ob diese Sonderzeichen enthalten oder nicht.
Alle verwendeten Zeichen können bei anderen Archiven oder in anderem Kontext auch fehlerfrei funktionieren.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Brauche ich while != -1, wenn ich immer einen BufferedReader verwende? Java Basics - Anfänger-Themen 8
S Erklärung BufferedReader und InputStreamReader Java Basics - Anfänger-Themen 4
Dimax BufferedReader.readLine().length() wirft NullPointer Java Basics - Anfänger-Themen 6
K Verständnisfrage Server/Client BufferedReader, PrintWriter Java Basics - Anfänger-Themen 2
M BufferedReader begrenzen Java Basics - Anfänger-Themen 3
M Java: BufferedReader liest nur die Hälfte der Text-Datei. Java Basics - Anfänger-Themen 4
O BufferedReader - Endlos Schleife Java Basics - Anfänger-Themen 2
K BufferedReader für IOTools ersetzen? Java Basics - Anfänger-Themen 17
M BufferedReader neue Zeile nach Knopfdruck Java Basics - Anfänger-Themen 9
H Unterschied BufferedReader und BufferedInputStream Java Basics - Anfänger-Themen 4
S BufferedReader TextFields Import Java Basics - Anfänger-Themen 5
B BufferedReader gibt Datei-Inhalt doppelt aus Java Basics - Anfänger-Themen 3
S BufferedReader nächste Zeile lesen Java Basics - Anfänger-Themen 4
E Erste Schritte txt.Datei mit BufferedReader einlesen und in 2D-Array abspeichern Java Basics - Anfänger-Themen 15
A Textdatei mit BufferedReader einlesen Java Basics - Anfänger-Themen 0
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4
S Einlesen BufferedReader Java Basics - Anfänger-Themen 5
D BufferedReader/InputStreamReader/Split Java Basics - Anfänger-Themen 2
M bufferedreader loop stoppen Java Basics - Anfänger-Themen 2
HoloYoitsu BufferedReader verhält sich seltsam Java Basics - Anfänger-Themen 10
I BufferedReader Text-Datei einlesen??? Java Basics - Anfänger-Themen 1
J Scanner & BufferedReader Java Basics - Anfänger-Themen 3
D Hilfe bei FileReader und BufferedReader Java Basics - Anfänger-Themen 2
V Fehlerhafte BufferedReader/switch Benutzung? Java Basics - Anfänger-Themen 2
L 2x BufferedReader in einem Programm Java Basics - Anfänger-Themen 1
K Einlesen einer txt von BufferedReader klappt nicht wie gewünscht Java Basics - Anfänger-Themen 12
N BufferedReader Java Basics - Anfänger-Themen 19
N Erste Zeile bei BufferedReader doppelt lesen? Java Basics - Anfänger-Themen 2
P Interpreter-Fehler Probleme mit java.io.BufferedReader Java Basics - Anfänger-Themen 6
M BufferedReader => TextField/Label Java Basics - Anfänger-Themen 8
B Input/Output Benutzereingabe mit BufferedReader Java Basics - Anfänger-Themen 7
B Erste Schritte BufferedReader mag nicht so recht Java Basics - Anfänger-Themen 4
B Input/Output Probleme mit BufferedReader Java Basics - Anfänger-Themen 4
J BufferedReader in Integer konvertieren Java Basics - Anfänger-Themen 7
T Input/Output StructuredFileReader extends BufferedReader Java Basics - Anfänger-Themen 6
P BufferedReader - als String[] speichern ? Java Basics - Anfänger-Themen 5
H Problem mit Regex in Verbindung mit BufferedReader Java Basics - Anfänger-Themen 4
J InputStreamReader + BufferedReader - keine Eingabemöglichkeit Java Basics - Anfänger-Themen 10
G Hilfe bei BufferedReader Java Basics - Anfänger-Themen 4
A Methoden BufferedReader durchzählen dann lesen Java Basics - Anfänger-Themen 11
T BufferedReader mehrere Zeilen einlesen Java Basics - Anfänger-Themen 4
S Erste Schritte Frage bezüglich "BufferedReader" Java Basics - Anfänger-Themen 3
A BufferedReader mit geöffneter Datei Java Basics - Anfänger-Themen 4
M Eigener InputStream will nicht mit BufferedReader Java Basics - Anfänger-Themen 3
H BufferedReader Zeilenauslesen & verwenden Java Basics - Anfänger-Themen 4
S BufferedReader liest was anderes als BufferedWriter schreibt Java Basics - Anfänger-Themen 5
F Eingabe von Ganzen Zahlen oder Strings mit BufferedReader Java Basics - Anfänger-Themen 10
D BufferedReader und .split() Java Basics - Anfänger-Themen 3
C BufferedReader Java Basics - Anfänger-Themen 5
C Datentypen BufferedReader Java Basics - Anfänger-Themen 6
c_sidi90 BufferedReader Benzinverbrauch Java Basics - Anfänger-Themen 7
Antoras Datei laden mit BufferedReader sehr langsam Java Basics - Anfänger-Themen 7
J Bufferedreader nich von anfang an. Java Basics - Anfänger-Themen 14
M Position des BufferedReader Java Basics - Anfänger-Themen 6
J Socket - BufferedReader lese Problem Java Basics - Anfänger-Themen 2
U BufferedReader - mark Java Basics - Anfänger-Themen 6
Hamstinator Frage zu BufferedReader/FileReader Java Basics - Anfänger-Themen 4
K BufferedReader/Writer trotz Cache? Java Basics - Anfänger-Themen 9
MEETyA Zeilenumbrüche fehlen nach BufferedReader Java Basics - Anfänger-Themen 3
S BufferedReader in Methode übergeben Java Basics - Anfänger-Themen 2
C BufferedReader und FileWrite Java Basics - Anfänger-Themen 2
G Frage zu BufferedReader readline() Java Basics - Anfänger-Themen 3
M BufferedReader.readline() Unix/Windows Zeilenumbruch Java Basics - Anfänger-Themen 4
K zwei Funktionen, ein BufferedReader? Java Basics - Anfänger-Themen 8
K BufferedReader im Konstruktor // guter Stil ? Java Basics - Anfänger-Themen 2
hdi FileReader / BufferedReader langsam? Java Basics - Anfänger-Themen 3
N BufferedReader Verständnisproblem Java Basics - Anfänger-Themen 12
M Problem mit BufferedReader. Java Basics - Anfänger-Themen 10
N Probleme mit dem BufferedReader Seitenquelltext auszulesen Java Basics - Anfänger-Themen 6
G BufferedReader Problem Java Basics - Anfänger-Themen 5
G Probleme mit BufferedReader Java Basics - Anfänger-Themen 6
E Was ließt der BufferedReader eigentlich ein? Java Basics - Anfänger-Themen 3
N Problem mit BufferedReader und close() Java Basics - Anfänger-Themen 6
T NullPointerException bei BufferedReader Java Basics - Anfänger-Themen 4
G bufferedReader -> String[] Java Basics - Anfänger-Themen 8
J NullPointerException BufferedReader.readLine() Java Basics - Anfänger-Themen 4
S java.io.* BufferedReader to String Java Basics - Anfänger-Themen 12
J bufferedReader liest zu wenig daten ein Java Basics - Anfänger-Themen 6
G BufferedReader Problem Java Basics - Anfänger-Themen 10
W Bestimmten Pfad im BufferedReader Java Basics - Anfänger-Themen 4
P BufferedReader / FileReader Key und Values Java Basics - Anfänger-Themen 7
K FileReader BufferedReader & Arrays Java Basics - Anfänger-Themen 14
G BufferedReader - split-Methode Java Basics - Anfänger-Themen 6
G Bufferedreader Java Basics - Anfänger-Themen 11
B BufferedReader für Char? Java Basics - Anfänger-Themen 6
K BufferedReader & BufferedWriter Java Basics - Anfänger-Themen 6
G BufferedReader Java Basics - Anfänger-Themen 6
V BufferedReader dann zusammenzählen Java Basics - Anfänger-Themen 3
G Hashset verknüpfen mit BufferedReader Java Basics - Anfänger-Themen 18
S BufferedReader (JFileChooser) Java Basics - Anfänger-Themen 2
P Komisches Verhalten von BufferedReader und readLine() Java Basics - Anfänger-Themen 2
R Probleme mit Bufferedreader Java Basics - Anfänger-Themen 11
R frage zur read()-Methode des BufferedReader Java Basics - Anfänger-Themen 2
M mit BufferedReader Zeile lesen Java Basics - Anfänger-Themen 11
L read() (von bufferedReader) abbrechen Java Basics - Anfänger-Themen 5
L unterbrechen von bufferedReader.read() Java Basics - Anfänger-Themen 4
R BufferedReader <-> InputStream Java Basics - Anfänger-Themen 3
G BufferedReader Java Basics - Anfänger-Themen 18
A BufferedReader Java Basics - Anfänger-Themen 6
C BufferedReader und BufferedWriter im Netzwerk Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben