Programmieren - alles kontrollieren 4.938 Themen, 20.667 Beiträge

Java: statische Methode aus innerer Klasse aufrufen

Dreamforger / 2 Antworten / Flachansicht Nickles

Jetzt wirds ein bischen verwirrend drum reduziere ich den Code mal auf ein Grundgerüst:


-------Outer.java--------------
<pre>


import....


public class Outer extends Script {
  private static class Inner {
    public void method() {
      Container.staticMethod();
    }
  }
}


</pre>


-------------Container.java------------------


<pre>


public class Container {
  public static void staticMethod() {
    //...
  }
}


</pre>


Container.java und Outer.java sind im selben Verzeichnis. Warum bekomm ich einen Compile-Fehler das er die Container class nicht findet (enthält nur statische Methoden, ich hab sie auch schon getrennt übersetzt - funktioniert) ? Was kann ich tun um den Fehler zu eliminieren?


Der Fehler vom Javac ist, natürlich mit anderen Namen:


<pre>


Outer.java: cannot resolve symbol
symbol  : variable Container
location: class Outer.Inner


</pre>
 

bei Antwort benachrichtigen
vergisses Dreamforger „Java: statische Methode aus innerer Klasse aufrufen“
Optionen

Hallo Dreamforger,

Du musst die Environment Variable CLASSPATH auf . setzen, damit alle
Klassen im aktuellen Pfad gefunden werden.

Ansonsten hat folgendes Beispiel bei mir einwandfrei funktioniert:
--------outer.java--------
import java.lang.*;

public class outer
{
public outer()
{
System.out.println("Konstruktor Outer");
inner.imethod();
}
private static class inner
{
public static void imethod()
{
other.staticMethod();
}
}
public static void main( String[] args )
{
outer myinstance = new outer();
}
}
--------Ende outer.java--------

-------other.java-----
import java.lang.*;

public class other
{
public other()
{
System.out.println("Konstruktor other");
}
public static void staticMethod()
{
System.out.println("other.staticMethod()");
}
}
-------Ende other.java-----

Gruss, vergisses

bei Antwort benachrichtigen
Danke Dreamforger