Eclipse Error: cannot make a static reference to a non-static field?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

canvas1 ist non-static, darauf kannst du in "public static void main(...)" nicht zugreifen.

Möglicherweise ist das eine Variable in NeoPixel

dann

Neopixel np = neopixel()

Graphics P = np.canvas1...

Schachpapa  24.12.2018, 10:53

Groß/Kleinschreibung kannst du hoffentlich selbst korrigieren. Da war die Zeit abgelaufen ...

0

Java stellt verschiedene Möglichkeiten bereit Daten zu speichern, die sich etwas voneinander unterscheiden:

  • Felder (fields): Dies sind Variablen, die zu einem Objekt gehören
  • Klassenvariablen: Dies sind Variablen, die an eine Klasse gebunden sind. Man spricht auch von class variables bzw. static variables

Klassenvariablen sind immer durch ein static gekennzeichnet.

ich weiß nicht, wie ich aus dem "non-static field" ein "static field" machen soll

Dein Code ergibt aus meiner Sicht nicht ganz viel Sinn. Du legst ein Objekt an:

new NeoPixel();

Aber speicherst die Referenz auf das Objekt nicht.

Graphics P = canvas1.getGraphics();

Woher kommt das cancas1 Objekt? Du hast zuvor keine Instanz erzeugt. Demnach müsste dir da doch bereits eine NullPointerException um die Ohren fliegen. Oder gibt es da noch mehr Code, den du uns nicht gezeigt hast.

Und noch ein Tipp von mir: Bitte programmiere in Java nicht ausschließlich mit dem Schlüsselwort static. Das ist nicht guter Java Stil und zudem ein Missbrauch des eigentlichen Sinnes dieses Schlüsselwortes.

canvas1 ist vermutlich nicht statisch…