2013-02-27 13 views
9

Qual è la differenza nel chiamare l'opzione -classpath da javac e dalle javaJavac vs Java all'interno -classpath opzione

ad esempio:

javac -classpath MyJar.jar GetJar.java 
java -classpath MyJar.jar:. GetJar 

funziona così come:

javac -classpath MyJar.jar GetJar.java 
java GetJar 

Quindi, in pratica, dove il primo -classpath relativo a javac deve essere presente, d'altra parte nella riga di comando java potrebbe essere op zionale. Perché? Sai in quale circostanza sarebbe obbligatorio. E più in generale qual è l'effetto di -classpath chiamato da javac e qual è l'effetto di -classpath chiamato da java.

Grazie in anticipo.

risposta

10

Uno è il percorso di classe utilizzato per la compilazione. L'altro è il classpath utilizzato per la corsa. E lo fanno non devono essere la stessa cosa. L'insieme di classi necessarie per i processi di compilazione sono tutti quelli indicati da ogni classe che viene compilata. Mentre il JAR di runtime potrebbe invocare una classe standalone con un metodo main vuoto e nessuna dipendenza.

Basta ricordare che in fase di esecuzione le dipendenze classe sono risolte in modo dinamico, in arte una classe viene caricato solo quando è necessario (questa è una generalizzazione, avvio e di sistema classi sono sempre caricato).

+0

Ottenuto, quindi se dichiaro un pezzo di codice come: if (scan.nextInt()> 10) new OtherClass(); solo se scan.nextInt() è maggiore di 10, verrà caricato OtherClass – Rollerball

+0

In realtà no, qualsiasi riferimento a una classe 'B' all'interno di un'altra classe' A' causerà automaticamente il caricamento della classe 'B' (anche se non lo è direttamente utilizzato a causa della logica condizionale). – Perception

1

Il presente documento contiene le risposte per le vostre domande

http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/javac.html

utilizzando -classpath ogni volta è un lavoro che richiede tempo. Utilizzare invece variabili d'ambiente (se si ha a che fare con un pacchetto come Java Mail)

classpath viene utilizzato per la compilazione. Javac è il compilatore Java, in cui converte il codice in byte code.

Quando si tratta di java viene utilizzato per eseguire il file di origine Java/jar.

+1

Correggi il collegamento al sito Web di oracle. – nbro

Problemi correlati