Cannot make a static reference to the non-static method

LILA

Aktives Mitglied
Hallo Forum,

habe mal wieder eine Frage.

Folgender Auszug aus meinem Code:
Java:
public static String CONFIG_FILE = getServletContext().getRealPath("/WEB-INF/conf/config.properties");

Ich will gerne den String des Config-Files static haben, da ich ihn auch in anderen Klassen nutzen will und nicht jedes mal ein neues Objekt generieren will.
Da die Methode getServletContext() jedoch nicht statisch ist, kann ich die Zuweisung so nicht vornehmen.

Gibt es da einen Trick?

Vielen Dank im Voraus uns schöne Grüße
LILA
 
Nein. Wie willst du etwas an einem Objekt (also nicht-statisch) aufrufen, wenn du kein Objekt hast?

Mehr Code und mehr Informationen bitte...
 
Die Methode ist vermutlich nicht static deklariert und somit an eine Objektinstanz gebunden.

Da eine static Variable jedoch nur an den Klassenprototyp gebunden ist kann dort natürlich kein Wert der Objektbezogen (also nicht static) ist einbezogen werden.

Das ist die Übersetzung der Fehlermeldung. Entweder musst du die Methode static deklarieren oder den Teil den du benötigts in eine eigene static Methode auslagern die dann von der ursprünglichen Methode aus auch aufgerufen wird.

[EDIT]Mist Landei war schneller ^^[/EDIT]
 
Wie schon geschrieben, geht nicht. Du musst Dir hier den Lebenszyklus einer Webanwendung zu Nutze machen, um mehrfache Aufrufe zu vermeiden. Config-Daten werden üblicherweise einmal beim Start der Webanwendung eingelesen. Implementiere dafür einen ServletContextListener (ServletContextListener (Java EE 5 SDK)) und lies die Daten in contextInitialized ein.
 
Hallo,

ich danke euch für eure Antworten.

Das mit dem ServletContextListener werde ich mal ausprobieren.

Die Methode 'getServletContext()' kann ich ohne Objektinstanz innerhalb des Servlets aufrufen,
weil sie an die Lebensdauer der Webanwendung geknüpft ist????
Oder wie kann man das einfach erklären?

Schöne Grüße
 
Die Methode 'getServletContext()' kann ich ohne Objektinstanz innerhalb des Servlets aufrufen,
weil sie an die Lebensdauer der Webanwendung geknüpft ist????
Oder wie kann man das einfach erklären?
Du hast eine Instanz und zwar von Servlet (genau genommen wahrscheinlich sogar HttpServlet, aber das ist eine Unterklasse).
 

Neue Themen


Zurück
Oben