2012-03-31 13 views
1

Ok, so. Ich habe vor einer Woche ein Buch über Java (Sams Teach java in 21 Tagen) bestellt, und es ist erst gestern eingetroffen. Ich arbeite an dem ersten Beispiel-Code, und ich halte diesen Fehler, wenn ich versuche, den Haupt-Code zu kompilieren:JDK-Probleme - Klassendateien können nicht geladen werden

C:\VolcanoApplication.java:5: error: cannot find symbol

VolcanoRobot dante = new VolcanoRobot();

^

symbol: class VolcanoRobot

location: class VolcanoApplication

C:\VolcanoApplication.java:5: error: cannot find symbol

VolcanoRobot dante = new VolcanoRobot();

    ^

symbol: class VolcanoRobot

location: class VolcanoApplication

und den Hauptcode Im Versuch zu kompilieren ist:

public class VolcanoApplication 
{ 
    public static void main(String[] arguments) 
    { 
     VolcanoRobot dante = new VolcanoRobot(); 
     dante.status = "exploring"; 
     dante.speed = 2; 
     dante.temperature = 510; 

     dante.showAttributes(); 
     System.out.println("Increasting speed to 3."); 
     dante.speed = 3; 
     dante.showAttributes(); 
     System.out.println("Changing temperature to 670."); 
     dante.temperature = 670; 
     dante.showAttributes(); 
     System.out.println("Checking the temperature."); 
     dante.checkTemperature(); 
     dante.showAttributes(); 
    } 
} 

und die VolcanoRobot.java Datei:

public class VolcanoRobot 
{ 
    String status; 
    int speed; 
    float temperature; 

    void checkTemperature() 
    { 
     if(temperature > 660) 
     { 
      status = "returning home"; 
      speed = 5; 
     } 
    } 

    void showAttributes() 
    { 
     System.out.println("Status: " + status); 
     System.out.println("Speed: " + speed); 
     System.out.println("Temperature: " + temperature); 
    } 
} 

ich kann keine javac bekommen überall in Eingabeaufforderung auszuführen (ich bin mit xP), damit ich navigieren, wo meine javac.exe ist (C: \ Programme \ Java \ jdk1.7.0_03 \ bin) und kompiliere VolcanoApp lication von dort (VolcanoApplication ist auf der Wurzel von C gefunden :)

Wenn ich nur Java überall eingeben, bekomme ich das Menü, aber nicht javac. Ich habe die Pfad- und Classpath-Variablen deklariert und funktioniert trotzdem nicht. irgendwelche Vorschläge?

+0

@ Alex St-Laurent: Bitte installieren Sie eine IDE und konzentrieren Sie sich auf echte Probleme. – Jayan

+0

Es tut mir leid, was? –

+0

@ Alex St-Laurent: Du hast erwähnt, dass du mit dem Buch angefangen hast. Mein Feedback ist, eine IDE zu verwenden, damit Sie sich auf die tatsächlichen Probleme konzentrieren können. Versuchen Sie intelliJ: http://www.jetbrains.com/idea/. oder Sonnenfinsternis. – Jayan

Antwort

2

Ihre beste Wette ist es, javac arbeiten von einem beliebigen Verzeichnis aus, indem Sie in die Umgebungsvariablen und ändern Sie Ihre PATH, so dass es C:\Program Files\jdk1.7.0_03\bin enthält.

Sobald Sie das getan haben, sollte in einer Eingabeaufforderung eingeben javac überall funktionieren.

Der Grund javac findet nicht die VolcanoRobot.java Datei ist, dass es nicht in dem Pfad ist, der javac nach Quelldateien sucht. Standardmäßig enthält der Pfad des aktuellen Verzeichnisses, wenn Sie also cd in das Verzeichnis VolcanoApplication.java und VolcanoRobot.java enthält, dann

javac VolcanoRobot.java VolcanoApplication.java 

... sollte es tun. Wenn dies nicht der Fall, fügen Sie -cp .:

javac -cp . VolcanoRobot.java VolcanoApplication.java 

Sie sollten dann in der Lage sein, es zu laufen über

java VolcanoApplication 

... oder

java -cp . VolcanoApplication 

aktualisieren: Da meine Hauptarbeitsstation Linux-basiert ist, hatte ich dies unter Windows   7 nicht gemacht Mach es die ganze Zeit mit Windows   XP) und so habe ich mich gefragt, ob es etwas Besonderes daran war. Sieht nicht so aus. Ich habe das JDK auf meiner Windows 7-Box installiert und hatte keine Probleme damit.Hier ist genau das, was ich getan habe:

  1. eröffnete eine Eingabeaufforderung und typisiert javac und Enter gedrückt, nur um sicherzustellen, dass ich nicht eine hatte installiert Ich habe mich nicht erinnern. Ich habe den üblichen "... wird nicht als interner oder externer Befehl erkannt" Fehler.
  2. Das JDK-Installationsprogramm von Oracle heruntergeladen.
  3. lief es und ließ es an seinem Standardort installieren.
  4. Die Systemsteuerung geöffnet.
  5. Tippen Sie "environ" in das Suchfeld (weil ich faul bin und nicht die Mühe habe, zu verfolgen, wohin sie diese Woche verschoben haben).
  6. Klicken Sie auf die Option "Systemumgebungsvariablen bearbeiten" und klickte in der Popup-Frage zu den Administratorberechtigungen auf Ja. Dies öffnete den Dialog "Systemeigenschaften" mit der geöffneten Registerkarte "Erweitert".
  7. Klicken Sie auf die Schaltfläche "Umgebungsvariablen ..." auf dieser Registerkarte.
  8. In der "Systemvariablen" -Box am unteren Rand scrollte man runter zu Path.
  9. Mit diesem markiert, klickte die Schaltfläche "Bearbeiten ...", die das Feld "Systemvariable bearbeiten" öffnete.
  10. Navigieren Sie im Windows Explorer zum Verzeichnis bin des JDK, das unter C:\Program Files\Java\jdk1.7.0_03\bin lag.
  11. In der Adressleiste angeklickt, alle ausgewählt und diesen Pfad in die Zwischenablage kopiert.
  12. Zurück in der "Edit System Variable" -Box, legte ich den Cursor an das Ende des Pfades, ein Semikolon (;) eingegeben (Hinweis: kein Doppelpunkt und keine Leerzeichen um ihn herum), und fügte dann den Pfad aus der Zwischenablage.
  13. Klicken Sie auf die Schaltfläche OK in diesem Feld, die Schaltfläche OK im Feld "Umgebungsvariablen" und die Schaltfläche OK im Feld "Systemeigenschaften".
  14. Eröffnete eine neue Eingabeaufforderung.
  15. Typ javac eingegeben und Enter gedrückt. Ich habe die javac Hilfe Liste.
  16. Die zwei Vulkanquelldateien erstellt und in ein Verzeichnis (in meinem Fall C:\tmp\j) gelegt.
  17. In dieses Verzeichnis geändert.
  18. typisierten:

    javac VolcanoRobot.java VolcanoApplication.java 
    

    ... und Enter gedrückt. Ich habe keine Fehler.

  19. typisierten:

    java VolcanoApplication 
    

    ... und Enter gedrückt. Es funktionierte gut, ich bekam die Ausgabe, die ich von den Quelldateien erwarten würde.

So ist es kein Problem, das auf Windows zu tun   7. Vielleicht, was ich oben tat wird Ihnen nützlich sein.

+0

Ich habe deklariert wo javac in der Pfadvariable ist, und ich habe auch die tools.jar unter classpath deklariert, und trotzdem funktioniert es nicht. –

+0

@ AlexSt-Laurent: Ich weiß nicht, was ich dir sagen soll. Wenn Sie den richtigen Pfad zu 'javac' in der' PATH'-env-Variablen angegeben haben und die Eingabeaufforderung neu gestartet haben (Sie haben angegeben, dass Sie neu gestartet haben, zählt), findet Windows ** dann 'javac' unter Verwendung dieses Pfades. Wenn dies nicht der Fall ist, liegt ein Problem mit dem Pfad vor, den Sie zu "PATH" hinzugefügt haben. Geben Sie in Ihrer Eingabeaufforderung Pfad ein und drücken Sie die Eingabetaste. Wenn Sie den Pfad zu 'javac' nicht sehen, haben Sie ihn nicht korrekt hinzugefügt. Wenn du denkst, dass du den Pfad zu 'javac' siehst, schaue sehr genau **, um zu sehen, wo der Tippfehler ist (es gibt einen, entweder im Pfad oder das'; 'davor). –

+0

Ich habe zu wo javac im Windows Explorer gefunden, kopiert und eingefügt den Pfad in die Pfadvariable. (es zeigt sich perfekt in CMD) Danke für den Versuch zu helfen, aber ich denke, das Problem ist nicht lösbar. Ich stelle gerade die .java-Dateien gerade dort auf, wo Javac gefunden wird, und das scheint gut zu funktionieren. –

1

Wenn die C: \ Programme \ Java \ jdk1.7.0_03 \ bin Ordner in Ihrem Systempfad Umgebungsvariable eingegeben wird, müssen Sie möglicherweise cmd.exe, wieder zu öffnen, da es nicht diese Umgebung laden Variablen im laufenden Betrieb.

Sie müssen dann javac vom Stamm Ihrer Anwendung ausführen.

+0

Ich habe all das versucht, sogar Neustart, wenn es hilft, habe ich Service Pack 3 auf XP –

+0

@ AlexSt-Laurent: Wenn Sie neu gestartet und es immer noch nicht gefunden 'javac', dann ist es nicht gelungen, den relevanten Pfad in Ihre 'PATH'-Variable zu setzen und Sie müssen zurückgehen und erneut prüfen. –

+0

Dann muss es in Ihrer Pfadvariablen falsch sein. Es ist einen doppelten Scheck wert. Unter Systemeigenschaften> Umgebungsvariablen, und es heißt 'Path' (nicht pathtext oder classpath). Die Einträge müssen durch ein Semikolon getrennt sein. Entschuldigung, wenn das alles offensichtlich ist, aber das ist, wo das Problem ist, und Sie müssen es überprüfen :) – lynks

Verwandte Themen