2013-04-08 13 views
21

So bin ich getting- warning: [options] bootstrap class path not set in conjunction with -source 1.6Bootstrap-Classpath nicht gesetzt

Und ich bin etwa 3 Fragen zu diesem Thema zu stellen. Ich verstehe, dass ich den Bootstrap-Klassenpfad festlegen muss, aber ich bin mir nicht sicher, wie ich das verstehe. Ein schneller Google hat mich gerade auf Seiten geschickt, die auf der Oracle-Seite zitiert wurden, aber ich habe die Oracle-Seite gelesen und nicht das Gefühl, dass ich sie besonders gut verstanden habe.

ich zur Zeit der Ausführung des Codes auf Netbeans, so alles, was ich tun muß, ist die Play-Taste trifft für sie zu kompilieren und auszuführen. Gibt es eine Eigenschaft, die vorgibt, wie dies kompiliert wird, damit ich den Bootstrap-Klassenpfad hinzufügen kann?

Auch für die kommende Eventualität, dass ich es nur ausführen auf Netbeans ausführen und es von der Befehlszeile ausführen, was ist die korrekte Möglichkeit, mit dem Bootstrap-Klassenpfad dort zu kompilieren? Sie sagen, $ javac -source 6 HelloWorld.java würde aber nur unter Angabe -source 1.6 wirklich die Lösung?

Vielleicht eine noch größere Frage, wie kann ich diese Art der Warnung in Zukunft vermeiden? Wenn ich noch ein wenig verstehe, referenziere ich eine alte Java-Quelle und damit ältere Methoden. Ich bin mir nicht sicher, wie oder wann das passiert ist.

Antwort

36

Sie Kreuzkompilierung tun. Sie verwenden einen JDK 7 Compiler Klassen zu kompilieren für JDK 6. Diese Ordnung ist, aber Probleme der Compiler will zu vermeiden, dass seine Hände auf JDK 6 rt.jar bekommen. Der Grund dafür ist, dass Sie möglicherweise Klassen generieren, die nicht mit JDK 6 funktionieren, da Sie möglicherweise die alten Sprachregeln (in diesem Fall 1.6) verwenden, aber die brandneuen Bootstrap-Klassen. Einige Methoden sind zum Beispiel im älteren JDK möglicherweise nicht vorhanden. So erhalten Sie Ihre Kompilation, aber sobald Sie das Programm ausführen, kann es mit einer MethodNotFoundException explodieren.

Paar von Lösungen, können Sie einfach ein Pick

  • Geben rt.jar von JDK 6. Warum als auch verwenden, um die älteren Compiler nicht?
  • Verwendung JDK 6-Compiler (es hat rt.jar enthalten). Warum sogar 7 verwenden, wenn keine 7 Features benötigt werden.
  • Ignorieren Sie die Warnung und haben gute Testabdeckung sicher, dass Sie Java 7 Funktionen
    • Ich weiß nicht, über NetBeans aber in Eclipse kann man auch sagen, dass Sie die Sourcen gegen JDK 6 so gewann es nicht verwenden zu machen Kompilieren Sie nicht, wenn Sie Java 7-Funktionen verwenden.
  • ändern geschäftlichen Anforderungen und kompilieren für Java 7.
+1

Danke, Ich habe das Gefühl, dass dies ein bisschen geklärt ist. – Stephopolis

+7

Downvoting, weil mehrere Lösungen ohne Anleitung gegeben werden, wie man sie macht. – seansand

+0

@toomasr Bitte haben Sie Verständnis dafür, dass die Rückkehr zu einem älteren JDK einfach auf Ihrem lokalen Rechner funktioniert (MacOs sind eine Ausnahme btw). Wenn Sie für (größere) Unternehmen arbeiten, können Sie Ihr JDK nur allzu oft nicht ändern. Zum Beispiel sind Sie verpflichtet, 1.7 auf Ihrem Entwicklungscomputer zu verwenden, während der Server, auf den Sie zielen, noch mit 1.6 festsitzt. Natürlich können Sie jetzt warten, bis sie (Serveradministratoren) schließlich zu 1.7 wechseln oder Sie sich wie ein Profi benehmen und Ihre Arbeit erledigen. Was würdest du wählen? – whaefelinger

1

Einfach Rechtsklick auf den Projekteigenschaften gehen und gehen Sie dann zu Binde- und wählen Sie das JDK 1.7 vorausgesetzt, Sie verwenden es Funktionen in Ihrem NetBeans-Projekt und Dies ist der Grund, warum Sie das Problem bekommen. Dies wird helfen, das Problem zu lösen und arbeitete für mich.

+0

Wie kann 'Bindung' an JDK 1.7 helfen, 1.6 als Bootstrap-Klassenpfad anzugeben? –

0

Ich verstehe, dass ich den Bootstrap-Klassenpfad festlegen muss, aber ich bin mir nicht sicher, ob ich verstehe, wie.

In Netbeans 8.0.2, gehen Sie zu:

Run > Set Project Configuration > Customise... 

Im Kategorien Fenster, gehen Sie zu:

Build > Compiling 

unteren Feld ist "Zusätzliche Compiler-Optionen", um die Sie hinzufügen können:

-bootclasspath /your/path/to/lower/java/version/lib/rt.jar