2013-03-30 14 views
7

Używam aplikacji opartej na języku Java (plik .jar) do uzyskiwania dostępu do witryny internetowej w celu prowadzenia dyskusji online. Ostatnio doświadczyłem dziwnej różnicy między uruchomieniem aplikacji przez dwukrotne kliknięcie (na komputerze Mac i systemie Ubuntu) a uruchomieniem java -jar client.jar z Terminal. Po dwukrotnym kliknięciu przycisku Otwórz klient nie pozwala mi się zalogować, a wszystko działa poprawnie, jeśli uruchomię go z terminala.Java - Jaka jest różnica dwukrotnego kliknięcia i uruchamiania z poziomu Terminalu w celu otwarcia pliku .jar?

Wiem, że opis może być zbyt ogólnikowy, ale po prostu zastanawiam się, czy istnieje jakakolwiek ogólna różnica między tymi dwoma sposobami uruchamiania pliku .jar. Dzięki!

środowisko Java My przedstawiono poniżej:

$ 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

To naprawdę zależy od tego, do czego system operacyjny jest skonfigurowany po dwukrotnym kliknięciu słoika. Mój jest skonfigurowany do otwierania go w winrar (staram się otwierać słoiki częściej niż je uruchamiać). – Taylor

+0

Jest skonfigurowany do otwierania z Oracle Java 7 Runtime na moim komputerze. Więc nie powinien to być ten problem. A klient otwiera się poprawnie, pokazując, że interfejs jest w porządku. Dowolny inny możliwy problem z konfiguracją, który widzisz? Dzięki! – dirkchen

+0

Czy jest możliwe, że niektóre skrypt logowania jest uruchomiony, gdy jesteś w terminalu, tak, że zmienna PATH lub CLASSPATH jest inna, a zatem środowisko operacyjne jest różne w obu przypadkach? Alternatywnie, nie wiem, w jaki sposób Ubuntu lub Mac ustawiają swoje katalogi robocze po dwukrotnym kliknięciu pliku, ale być może jest to wskazówka. – Omaha

Odpowiedz

5

W zależności od zastosowanej metody wywołania programu, bieżący katalog roboczy może się zmienić. Po uruchomieniu przez java -jar katalog roboczy jest ustawiany przez terminal, łatwo identyfikowalny przez prompt. Po dwukrotnym kliknięciu katalog domyślnie znajduje się w katalogu domowym użytkownika. Szybki test do demonstracji:

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

Zakładając JAR znajduje się w /home/test/Applications, pokaże tę drogę podczas jazdy od terminalu. Po dwukrotnym kliknięciu jest to tylko /home/test. Dlatego ścieżka może być identyczna przy użyciu obu metod (gdy archiwum znajduje się w ~), ale niekoniecznie - trudność przy próbie debugowania/odtworzenia nieprawidłowego zachowania.

+0

Wielkie dzięki za odpowiedź! To naprawdę jasne i pomocne! – dirkchen

+0

Podwójne kliknięcie w systemie Ubuntu 14.04 jest prawdopodobnie błędem, ponieważ bardziej intuicyjne jest to, że katalog bieżący powinien być nadrzędnym katalogiem jar. W ten sposób podwójne kliknięcie jest realizowane w systemie Windows 10. Pozwala to na podwójne kliknięcie, aby wykorzystać względne ścieżki. – simgineer

Powiązane problemy