2013-04-08 6 views
21

Quindi sono getting- warning: [options] bootstrap class path not set in conjunction with -source 1.6bootstrap percorso di classe non impostato

E sto per chiedere 3 domande su di esso. Capisco che ho bisogno di impostare il percorso di classe bootstrap, ma non sono sicuro di aver capito come. Un rapido google mi ha appena inviato a pagine che citavano la pagina Oracle, ma ho letto la pagina di Oracle e non ho sentito di averlo capito particolarmente bene.

Attualmente sto eseguendo questo codice su Netbeans, quindi tutto ciò che devo fare è premere il pulsante di riproduzione per farlo compilare ed eseguire. Esiste una proprietà che detta come verrà compilata in modo da poter aggiungere il percorso della classe bootstrap?

Inoltre, per l'eventualità che eseguirò l'esecuzione solo su Netbeans ed eseguirlo dalla riga di comando, qual è il modo corretto di compilare con il percorso di classe bootstrap lì? Dicono $ javac -source 6 HelloWorld.java ma sarebbe solo la soluzione -source 1.6?

Forse una domanda ancora più grande in, come evitare questo tipo di avviso in futuro? Se capisco anche un po ', sto facendo riferimento a una vecchia fonte java e quindi a metodi più vecchi. Non sono sicuro di come o quando è successo.

risposta

36

Si sta eseguendo la compilazione incrociata. Stai utilizzando un compilatore JDK 7 per compilare classi per JDK 6. Va bene, ma per evitare problemi il compilatore vuole mettere le mani su JDK 6 rt.jar. Il ragionamento dietro è che potresti effettivamente generare classi che non funzionano con JDK 6 perché potresti utilizzare le regole della lingua precedente (in questo caso 1.6) ma le nuovissime classi di bootstrap. Ad esempio, alcuni metodi potrebbero non essere presenti nel JDK precedente. Così hai fatto la tua compilation, ma una volta eseguito il programma potrebbe saltare in aria con un MethodNotFoundException.

paio di soluzioni, si può solo scegliere uno

  • Specificare rt.jar dal JDK 6. Perché non utilizzare il compilatore più vecchio di dispari?
  • Utilizzare il compilatore JDK 6 (incluso rt.jar incluso). Perché usare anche 7 se non sono necessarie 7 funzionalità.
  • Ignorare l'avviso e hanno una buona copertura test per assicurarsi che non si utilizza Java 7 caratteristiche
    • Non so su NetBeans, ma in Eclipse si può anche dire che si sta compilando contro JDK 6 così ha vinto in realtà viene compilato se si utilizzano le funzionalità di Java 7.
  • esigenze di cambiamento del business e compilare per Java 7.
+1

Grazie, Mi sembra che questo abbia chiarito un po 'il downvoting – Stephopolis

+7

perché sono state fornite diverse soluzioni senza alcuna istruzione su come eseguirle. – seansand

+0

@toomasr Si prega di comprendere che tornare a un vecchio JDK è facile da lavorare sul proprio computer locale (i MacO sono un'eccezione btw). Quando lavori per aziende (più grandi), troppo spesso non puoi cambiare il tuo JDK. Ad esempio, si è obbligati a utilizzare 1.7 sulla macchina di sviluppo mentre il server che si è target è ancora bloccato con 1.6. Ovviamente ora puoi aspettare fino a quando loro (amministratori del server) passano alla 1.7 o ti comporti come un professionista e fai il tuo lavoro. Quale sarebbe la tua scelta? – whaefelinger

1

Basta andare fare clic destro sulle proprietà del progetto e quindi vanno a Binding e scegliere il JDK 1.7 a condizione che si sta utilizzando le sue caratteristiche nel progetto NetBeans e questo è il motivo per cui stai ricevendo il problema. Questo aiuterà a risolvere il problema e ha funzionato per me.

+0

Come può 'legarsi' a JDK 1.7 aiutare a specificare 1.6 come percorso di classe di bootstrap? –

0

Capisco che ho bisogno di impostare il percorso di classe bootstrap ma non sono sicuro di aver capito come.

In Netbeans 8.0.2, vai a:

Run > Set Project Configuration > Customise... 

Nella finestra Categorie, andare a:

Build > Compiling 

Il campo inferiore è "Opzioni compilatore aggiuntive" a cui è possibile aggiungere:

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