Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
das ist jetzt sicher eine total einfache Frage, aber irgendwie stehe ich gerade total auf dem Schlauch .
Ich habe zwei Klassen, die ich in zwei Dateien haben. In der einen class ist meine main-Funktion, die die zweite Klasse aufruft. Wie spreche ich die zweite Klasse korrekt an? Diese Zweite kann ich fehlerfrei kompilieren, bei der 1. tritt immer ein Fehler auf.
Die 1. Klasse mit Main-Funktion:
Java:
public class Test
{
public static void main( String[] args )
{
Test1 test1 = new Test1 ();
test1.ausgabe();
}
}
Die 2. Klasse, die angesprochen werden soll:
Java:
public class Test1
{
public Test1()
{
}
static void ausgabe(int n)
{
String t = javax.swing.JOptionPane.showInputDialog("Please enter your name:");
String[] name = t.split(" ");
System.out.print("Your Prename is "+name[0]+" and your surname's "+name[1]+".");
}
}
Und die Fehlernachricht:
----------
1. ERROR in Test.java (at line 5)
Test1 test1 = new Test1 (); //das erste Test1 weißt Fehler auf
^^^^^
Test1 cannot be resolved to a type
----------
2. ERROR in Test.java (at line 5)
Test1 test1 = new Test1 (); //das hintere Test1 ist fehlerhaft
^^^^^
Test1 cannot be resolved to a type
----------
2 problems (2 errors)
http://service.phil-fak.uni-duesseldorf.de/tutorial/java/SelfJAVA/java0034.htm hat gesagt.:
Über die CLASSPATH Variable finden die JDK Werkzeuge und die Applikationen die Klassenbibliotheken. Sie wird nur dann benötigt, wenn sich Bibliotheken nicht im JDK Installationsverzeichnis bzw. im aktuellen Verzeichnis befinden. Ab der JDK Version 1.2.2 hat die Java Platform einen zusätzlichen Mechanismus (extension mechanism) eingebaut, um Bibiliotheken zu finden.
Anstelle der CLASSPATH Variablen kann bei den JDK Werkzeugen auch der Schalter -classpath verwendet werden. Dieser Schalter wird oft bevorzugt, denn er erlaubt die Pfade für verschiedene Applikationen indiviuell zu setzen, ohne das andere Applikationen davon beeinflusst werden.
Am CLASSPATH kann es also leider nicht liegen... Normales kompilieren funktioniert ja auch, nur eben mit diesem Aufruf einer anderen Klasse nicht.
Der Fehler hat sich im Übrigen nicht geändert, nachdem ich den Übergabewert entfernt habe (sollte er auch nicht ).
public class Test
{
public static void main( String[] args )
{
Test1.ausgabe();
}
}
und ohne Übergabewert n
Java:
public class Test1
{
public Test1()
{
}
static void ausgabe()
{
String t = javax.swing.JOptionPane.showInputDialog("Please enter your name:");
String[] name = t.split(" ");
System.out.print("Your Prename is "+name[0]+" and your surname's "+name[1]+".");
}
}
erhalte ich leider denselben Fehlercode, diesmal natürlich nur auf das einzelne Test1 bezogen. Ich nehme an, dass er die Datei aus irgendwelchen Gründen nicht finden/aufrufen kann.
Allerdings komme ich nicht dahinter, woran das liegen könnte...
----------
1. ERROR in Test.java (at line 5)
Test1.ausgabe();
^^^^^
Test1 cannot be resolved
----------
Da ich ausschließliche mit IDE's arbeite, tätige ich keinen manuellen kompileraufruf, aber reicht es hier aus, nur die Datei anzugeben, die die main enthält?!
[c] javac Test.java [/c]
Wenn das der Kompileraufruf ist, könnte ich mir vorstellen, dass hier schon der Fehler liegt. Ich würde dir zu einer (oder zwei ) IDE raten (Eclipse und/oder Netbeans).
Ich habe ein wenig weitergegooglet und da fiel mir im Zusammenhang mit C Makefiles ein, die unter Eclipse verwendet werden müssen. Allerdings können in C Auslagerungsdateien auch ohne Makefile integriert werden (erst die Auslagerung kompilieren, dann die Main-Datei). Genau dies möchte ich unter Java realisieren, falls das möglich ist.
Stimmt es also, dass mein Problem mit dem Kompilieren an einem fehlenden Makefile liegen könnte? Und wenn ja, kann ich auch ordentlich ohne Makefile kompilieren wie es unter C funktioniert?
Ich habe ein wenig weitergegooglet und da fiel mir im Zusammenhang mit C Makefiles ein, die unter Eclipse verwendet werden müssen. Allerdings können in C Auslagerungsdateien auch ohne Makefile integriert werden (erst die Auslagerung kompilieren, dann die Main-Datei). Genau dies möchte ich unter Java realisieren, falls das möglich ist.
Stimmt es also, dass mein Problem mit dem Kompilieren an einem fehlenden Makefile liegen könnte? Und wenn ja, kann ich auch ordentlich ohne Makefile kompilieren wie es unter C funktioniert?
Ich danke dir, dass du dir so viel Zeit genommen hast!
Ich bin ja auch der Meinung, dass das funktionieren sollte, deswegen bin ich ja schon halb am Verzweifeln .
Dank deiner Idee habe ich jetzt auch mal Screenshots gemacht, du kompilierst ja sogar nur die Main-Datei, wie ich gerade sehe, allerdings mit Pfadangabe... hm...
Im Zitat oben steht jedoch, dass die Pfadangabe irrelevant sein soll, wenn sich die Klassen im selben Ordner wie die Main-Datei befinden (das ist hier ja der Fall).
Test1.java kompiliert, wie gesagt, Test.java allerdings nicht.
Die Pfadangabe, die ich da mache, ist die Pfadangabe zur JDK und wird natürlich benötigt. Denke allerdings, dass das bei dir nicht das Problem sein kann, weil sonst würde "Der Befehl "javac" ist entweder falsch geschrieben oder
konnte nicht gefunden werden." kommen.
Und wie ändere ich es, wenn es nun wirklich am CLASSPATH liegt? Alle anderen Dateien lassen sich ja auch kompilieren und ausführen, nur diese mit dem Klassenaufruf (Test1.java) nicht (deswegen verstehe ich das mom. nicht. An die Javabibliotheken muss er ja auch so kommen, um z.B. die Dialogfunktion zu kompilieren und die funktioniert bei mir, wenn ich die zweite Klasse in die Main schreibe (also die Anweisungen in die Main von Test.java).
nope...nicht mehr. Aber normalerweise dürfte es nicht von der Plattform abhängen :-/ . Aber was mir gerade auffällt: Windows hat bei mir die Umgebungsvariable CLASSPATH mit folgenden Werten: [c].;C:\Programme\Java\jre6\lib\ext\QTJava.zip[/c]
wenn Michael...'s bsp nicht funktioniert, versuchs nochmal mit:
[c]javac.exe -classpath . Test.java[/c]
Versuchs mal mit dem Setzen der Umgebungsvariable Classpath
(rechtsklick auf Arbeitsplatz -> Eigenschaften -> Reiter: Erweitert -> Umgebunsvariablen -> Bei Systemvariablen: Neu ->
Name der Variablen: CLASSPATH
Wert der Variablen: .
)