2013-03-30 8 views
7

Sto usando un'applicazione basata su Java (un file .jar) per accedere a un sito Web per discussioni online. E di recente ho riscontrato alcune strane differenze tra l'esecuzione dell'applicazione facendo doppio clic (sia su Mac che su Ubuntu) e eseguendo java -jar client.jar da Terminal. Quando apro il client facendo doppio clic, non mi consente di accedere, mentre tutto funziona correttamente se lo avvio da Terminal.Java - Qual è la differenza di fare doppio clic e in esecuzione da Terminal per aprire un file .jar?

So che la descrizione potrebbe essere troppo vaga, ma mi chiedo solo se esiste una differenza generale tra questi due modi di eseguire il file .jar. Grazie!

ambiente mio Java è la seguente:

$ java -version 
java version "1.7.0_17" 
Java(TM) SE Runtime Environment (build 1.7.0_17-b02) 
Java HotSpot(TM) Server VM (build 23.7-b01, mixed mode) 
+0

Dipende molto da cosa è configurato il sistema operativo quando si fa doppio clic su un barattolo. Il mio è configurato per aprirlo in winrar (tendo ad aprire i vasi più spesso di eseguirli). – Taylor

+0

È configurato per l'apertura con Oracle Java 7 Runtime sul mio computer. Quindi non dovrebbe essere quel problema. E il client si apre correttamente, mostrando l'interfaccia bene. Qualche altro possibile problema di configurazione che vedi? Grazie! – dirkchen

+0

È possibile che alcuni script di accesso siano in esecuzione quando ci si trova nel terminale, in modo tale che PATH o CLASSPATH siano diversi, e quindi l'ambiente operativo è diverso in entrambi i casi? In alternativa, non so come Ubuntu o Mac impostino le loro directory di lavoro quando si fa doppio clic su un file, ma forse è un indizio. – Omaha

risposta

5

A seconda del metodo utilizzato per richiamare il programma, la directory di lavoro corrente potrebbe cambiare. Quando viene eseguito tramite java -jar, la directory di lavoro viene impostata dal terminale, facilmente identificabile dal prompt. Quando si fa doppio clic, la directory passa automaticamente alla directory home dell'utente. Un test rapido per la dimostrazione:

public class TestWorkingDirectory { 
    public static void main(String[] args) { 
     javax.swing.JOptionPane.showMessageDialog(
       null, System.getProperty("user.dir")); 
    } 
} 

Supponendo JAR si trova in /home/test/Applications, mostrerà la quest'ultima durante l'esecuzione dal terminale. Quando fai doppio clic, è solo /home/test. Pertanto, il percorso potrebbe essere identico utilizzando entrambi i metodi (quando l'archivio si trova in ~), ma non necessariamente: una difficoltà durante il tentativo di eseguire il debug/riprodurre comportamenti anomali.

+0

Grazie mille per la risposta! È davvero chiaro e utile! – dirkchen

+0

Il comportamento del doppio clic su Ubuntu 14.04 è probabilmente un bug poiché è più intuitivo che la directory corrente debba essere la madre della directory jar. Ecco come viene implementato il doppio clic su Windows 10. Ciò consente di fare doppio clic per sfruttare i percorsi relativi. – simgineer

Problemi correlati