Wie rufe ich eine Methode außerhalb eines Projektes auf?

Guenter123987

Bekanntes Mitglied
Ich habe in der Klasse "s" aus dem Projekt "h" folgenden Code:
Java:
package h;
public class s
{
   public String c(int n)
   {
     String text = ""+n;
     return text;
   }
}
In der Klasse "testen" aus dem Projekt "Rumspielen,Testen" habe ich folgenden Code:
Java:
public class testen
{
   public static void main (String[] args)
   {
     String nummer = h.s.c(15);
   }
}
Die Variable "nummer" sollte eigentlich den Wert 15 in ASCII-Zeichen enthalten.
Die Fehlermeldung, wenn ich "testen" starte: "h cannot be resolved".
Was habe ich falsch gemacht?
 
Ist die Klasse wirklich in einem komplett anderen Projekt oder nur einem anderen package innerhalb des gleichen Projektes? Das "package h;" in der Klasse "s" deutet eher auf zweiteres hin.

Das Problem was ich sehe ist eher, dass du eine nicht statische Methode aus einem statischem Kontext aufrufen möchtest.

Was du machen kannst ist:
Java:
    public static void main(String[] args) {
        h.s s1 = new h.s();
        String nummer = s1.c(15);
    }

Alternativ kannst du die Methode "c" in der Klasse "s" auch static machen.

Wenn du die Klasse importierst, dann kannst du es auch so schreiben:
Java:
import h.s;
public class testen {
    public static void main(String[] args) {
        s s1 = new s();
        String nummer = s1.c(15);
    }
}

Und du solltest dir angewöhnen Klassennamen groß zu schreiben. Allgemein sind die Methoden- und Klassenamen etwas suboptimal.
 
@Tarrew
Hab die Methode c statisch gemacht und deinen zweiten Code für testen übernommen. (Der, in dem die Klasse importiert wird.) In der Konsole steht aber folgende Fehlermeldung:
Java:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
   s cannot be resolved to a type
   s cannot be resolved to a type

   at Testen.main(Testen.java:4)
Und es ist wirklich ein anderes Projekt.
Ich kann ein Bild vom Package Explorer schicken, wenn das hilft.
 
Du solltest die Methode entweder an einem Objekt aufrufen ODER statisch machen. Also wenn du meinen zweiten Code nimmst, dann lass das static weg (auch wenn es gehen würde).

Mach doch mal bitte einen Screenshot von deiner Projektstruktur, sodass man sieht wo die Klassen wirklich liegen.
 
Okay, also tatsächlich zwei komplett unterschiedliche Projekte.

Das sieht mir nach Eclipse aus. Ich benutze zwar IntelliJ aber ich glaube in Eclipse sollte es so gehen:
Rechtsklick auf das "Rumspielen, Testen" Projekt -> Build Path -> Configure Build Path -> Auf den Projekte Tab wechseln -> Dein "h"-Projekt hinzufügen.

Alternativ das h-Projekt als .jar exportieren und die .jar dann in deinem Rumspielen, Testen Projekt importieren (auch wieder über Build Path -> Configure Build Path -> Add External jar)
 
Irgendwie musst du es zu deinem Projekt hinzufügen. Entweder so, oder die Variante mit der .jar Datei.

Oder man legt sich verschiedene Pakete im gleichen Projekt an, was mir bei kleineren Sachen sinnvoller erscheint. Je nachdem was du da vorhast.
 
Nein, das ist nicht schade, sondern sehr sinnvoll. Schade wäre es, wenn das gesamte Gerümpel, das man irgendwo in der IDE liegen hat, automatisch in jedes Projekt eingebunden würde. Dann hätte man ständig mit Namenskollisionen zu kämpfen und es wäre beispielsweise schwierig, an zwei Projekten zu arbeiten, die unterschiedliche Versionen derselben Bibliothek verwenden.
 
Mensch guenter, das heißt Hilfsklassenprojekt, und nicht Methoden-. Schneller ist es abermal. Punkt für dich. Weiterhin Klasse groß und Methodennamen sprechende Bezeichner geben.

Also ich würd:
1. Bei Eclipse bleiben (oder schlichter Texteditor),
2. den Rat von Schaden nicht befolgen, und erst mal alles in ein Projekt pflanzen.
 
Zuletzt bearbeitet von einem Moderator:
-> vermeide es, alles in ein großes Projekt zu pflanzen, ist bei mir dabei angekommen 😀
Ach so. Nein, ich wollte nur zeigen, dass es problematisch wäre, wenn die Inhalte unterschiedlicher Projekte, die man gleichzeitig in der IDE hat, automatisch miteinander verknüpft würden. Die Diskussion, wie groß ein Projekt sein sollte, wollte ich gar nicht eröffnen.🙂

Ich vermute, dem TE erscheinen die Vorschläge von @Tarrew jetzt noch umständlich, weil man am Anfang gerne viele kleine Übungsprojekte zum Lernen erstellt, so dass man häufiger damit konfrontiert wäre, eigene Utility-Projekte zu integrieren. Später erstellt man ja normalerweise nicht so viele Projekte. Ich habe in meiner IDE immer ein Müllprojekt, in dem ich schnell etwas ausprobieren kann (z.B. für dieses Forum), ohne ein neues Projekt erstellen zu müssen. Von Zeit zu Zeit lösche ich die Inhalte dann einfach, wenn es mir zu unordentlich wird.
 

Zurück
Oben