2016-04-03 8 views
-1

Hallo, ich bin neu in Java und ich versuche, einen Byte-Stream mit Deflater in java.util.zip zu komprimieren. Ich folgte ein Beispiel aus Oracle site.Wie Deflater in java.util.zip zu verwenden

try { 
     // Encode a String into bytes 
     String inputString = "blahblahblah"; 
     byte[] input = inputString.getBytes("UTF-8"); 

     // Compress the bytes 
     byte[] output = new byte[100]; 
     Deflater compresser = new Deflater(); 

     compresser.setInput(input); 
     compresser.finish(); 
     int compressedDataLength = compresser.deflate(output); 
     compresser.end(); 

     // Decompress the bytes 
     Inflater decompresser = new Inflater(); 
     decompresser.setInput(output, 0, compressedDataLength); 
     byte[] result = new byte[100]; 
     int resultLength = decompresser.inflate(result); 
     decompresser.end(); 

     // Decode the bytes into a String 
     String outputString = new String(result, 0, resultLength, "UTF-8"); 
    } catch(java.io.UnsupportedEncodingException ex) { 
     // handle 
    } catch (java.util.zip.DataFormatException ex) { 
     // handle 
    } 

Wenn ich diesen Code ausführen es gibt mir eine Fehlermeldung, setInput(), finish(), deflate() und end() ist nicht definiert. Hier ist die Fehlermeldung

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
The method setInput(byte[]) is undefined for the type Deflater 
The method finish() is undefined for the type Deflater 
The method deflate(byte[]) is undefined for the type Deflater 
The method end() is undefined for the type Deflater 

at Deflater.main(Deflater.java:16) 

ich java.util.zip importiert und sah in der Dokumentation in Oracle site.It sagt diese Methoden bestehen.

Ich kann nicht herausfinden, wo das Problem liegt. Kann jemand helfen?

+1

Ich führte den exakt gleichen Code online auf Tutorials Punkt und es funktionierte perfekt, Die Methoden sind in der Deflate-Klasse vorhanden. Gibt es einen Fehler in der Java-Konfiguration, versuchen Sie bitte, Inflate und Deflate separat zu importieren. –

Antwort

2

Das Problem ist, dass Sie Ihre Hauptklasse Deflater aufrufen, die für den Compiler mehrdeutig ist. Es gibt zwei Klassen mit demselben Namen, Ihre Klasse und die Postleitzahl Deflater. Sie sollten diese Zeile ändern: Deflater compresser = new Deflater(); zu diesem java.util.zip.Deflater compresser = new java.util.zip.Deflater(); oder einfach den Namen Ihrer Hauptklasse ändern.