# Neue SuppressWarning in Eclipse Juno



## blauerninja (10. Sep 2012)

Hallo Leute,
ich hab heute ein Update auf Eclipse Juno gemacht und prompt festgestellt, dass eine Klasse, die bei mir zum Lesen aus Dateien zuständig ist mit einer Warnung versehen wurde. Ich solle doch @SuppressWarnings("resource") vor die Methode schreiben. Wozu dient dies? Bei Indigo gab es sowas nicht, im Internet find ich zu ebendieser warnung noch nichts.

Kurz noch ein Snippet:

```
public static String readLine(String file, String linesFirstWord)
                       throws ArgumentNotFoundInFileException, FileNotFoundException, IOException {
    try {
      String output = null;
      BufferedReader input = new BufferedReader(new FileReader(file)); //<- Add Susspresswarning("resource") to input or readLine()

      do {
        output = input.readLine();

        if (output == null) {
          throw new ArgumentNotFoundInFileException(linesFirstWord, file); //<- Add SusspressWarning("resource") to readLine()
        }
      } while (!output.split(SEPARATOR)[0].equals(linesFirstWord));

      input.close();
      return output;
    } catch (IOException e) {
    }
  }
```


----------



## VfL_Freak (10. Sep 2012)

Moin,

schau mal hier:
Help - Eclipse Platform

Gruß
Klaus

[EDIT]
Vlt. noch zur weiteren Erklärung :

*Closeable* ist eine einfache Schnittstelle seit Java 5. Closeable wird von allen lesenden und schreibenden Datenstrom-Klassen implementiert, die geschlossen werden können.

void *close*() throws IOException Schließt den Datenstrom. Ein schon geschlossener Strom kann noch einmal geschlossen werden und hat keine Konsequenzen.
[/EDIT]


----------



## SlaterB (10. Sep 2012)

bug at The Object Teams Blog
"Help the JDT Compiler helping you! - 2: Resource leaks - continued"
scheint ziemlich viel passendes zu enthalten
(Suche war: Add @SuppressWarnings("resource") juno)

zu deinem Programm:
input  wird nicht geschlossen wenn eine IOException auftritt, setze das close() ins finally,
wobei man ganz sauber wohl dort auch noch auf null prüfen muss,
vielleicht ist das der Grund für die Warning


----------



## blauerninja (10. Sep 2012)

Ja, es lag an dem input.close() im Falle einer Exception. Hab da nicht dran gedacht. Danke für die schnelle Hilfe.


----------



## blauerninja (10. Sep 2012)

Ich hab nur nach SuppressWarning("resource") gesucht. Fündig wurde ich nur zu suppressWarnings allgemein. Nicht zu ressource


----------



## SlaterB (10. Sep 2012)

wenn du Java 7 hast, dann vielleicht ein try wie hier:
http://www.java-forum.org/java-basics-anfaenger-themen/141286-einlesen-auslesen-funktioniert.html

ganz ohne close()


----------



## Marco01_809 (10. Sep 2012)

@SuppressWarnings hat aber nichts mit Eclipse zu tun!
Das ist eine Java Annotation, siehe SuppressWarnings (Java Platform SE 7) 


> Indicates that the named compiler warnings should be suppressed


Hilft also nicht gegen das eigentliche Problem, unterdrückt nur die Meldung vom Compiler.

In Indigo gab es diese Vorschlagstypen auch schon, nur noch nicht für nicht-geschlossene Closeables.


----------

