# "(.) should be accessed in a static way" Falsche W



## oliver1974 (6. Sep 2007)

Hallo zusammen,

folgendes Phänomen: Eclipse 3.3 meckert mich hier bei einigen
Feld-/ bzw. Methodenzugriffen rum

"The static field/method (blabla) should be accessed in a static way."

"Okay", werdet ihr sagen, "dann greif halt richtig auf die statischen Sachen zu, nicht über
eine Instanz sondern über eine Klasse!"

Tja.. nur, dass mach ich schon.

Hier mal ein Auszug

Ganz simpel


```
public class Util
{
    /** Just a convenience constant for the file seperator */
    public static final String SEP = System.getProperty ("file.separator"); 

    /** Just a convenience constant for the new line character(s) */
    public static final String NL  = System.getProperty ("line.separator"); 

     /** The actual working directory */
    public static final String WD  = System.getProperty ("user.dir");
    
    public static boolean debug = false;

(..)
}
```

Schon bei einem simplen Zugriff via


```
Util.debug = false;
```

kommt dann die Warning.

Nur, zur Hölle... "Util" IST doch eine Klasse und der Zugriff darauf
sollte doch so korrekt sein.. oder hab ich einen Block?


----------



## Murray (6. Sep 2007)

Hast du evtl. irgendwo eine Instanz der Klasse Util, die Util heisst? Also

```
public class UtilTest {
  protected Util Util = new Util();
}
```
Das würde natürlich der Konvention widersprechen, dass man Member-Variablen klein zu schreiben hat, aber möglich wäre es.


----------



## oliver1974 (6. Sep 2007)

Murray hat gesagt.:
			
		

> Hast du evtl. irgendwo eine Instanz der Klasse Util, die Util heisst? Also
> 
> ```
> public class UtilTest {
> ...



Nein, das wäre mein nächster Gedanke gewesen... die Suche findet aber nichts derartiges...

Ist eventuell folgendes ein Problem:


```
import de.oliverkitzing.utilities.Util;
```

in Verbindung mit:


```
import static de.oliverkitzing.utilities.Util.SEP;
import static de.oliverkitzing.utilities.Util.NL;
(...)
```

Eigentlich nicht, oder?

Die Warnings sehe ich momentan auch nur unter Eclipse.. Netbeans 6 M 10 zeigt
mir da nichts an, aber eventuell ist da irgendwie ein Warning Level zu niedrig?
(nur, wo stellt man den ein?)

Müsste "javac" auf der Konsole nicht auch was schmeißen? (..wie dreh ich denn
da die Meldungsfreudigkait des Compilers hoch.. ich muss so selten direkt mit javac 
kompilieren..)


----------



## NTB (6. Sep 2007)

Die Imports haben damit gar nichts zu tun.
Vielleicht verschluckt sich Eclipse da auch einfach nur. Es sollte ja nur ein Warning sein.
Du könntest mal ein /Project/Clean versuchen.

Und um sicher zu gehen, dass Du nicht doch irgendwie eine Instanz erzeugt hast und um zu vermeiden, dass das jemals irgendwer tut, solltest Du den Construktor verstecken:

```
private Util() {
}
```


----------



## oliver1974 (6. Sep 2007)

> Die Imports haben damit gar nichts zu tun.





> Vielleicht verschluckt sich Eclipse da auch einfach nur.



Nehme ich auch an.. riecht aber fast nach Bug...



> Du könntest mal ein /Project/Clean versuchen.



Keine Änderung

Konstruktoränderung habe ich durchgeführt... hätte ich
ohnehin machen sollen... macht in der Klasse auch keinen Sinn.
Trotzdem keine Änderung.

Dürfte wohl ein Eclipse-Bug sein..

Kennt jemand eigentlich spezfische Eclipse-Foren?


----------



## ms (6. Sep 2007)

Hast du die variable 'debug' auch mit 'import static' importiert und dann trotzdem
mit 

```
Util.debug = false;
```
darauf zugegriffen?

Vielleicht ist da Eclipse etwas sensibel.
Ist jetzt nur so eine Idee, ich kanns leider im Moment selbst nicht ausprobieren.

ms


----------



## Gast (7. Sep 2007)

Ich kann den Fehler unter Eclipse 3.2 nicht nachvollziehen. Poste doch mal ein eigenständiges Beispiel wo das passiert.


----------

