2013-03-30 21 views
7

Tôi đang sử dụng ứng dụng dựa trên Java (tệp .jar) để truy cập trang web để thảo luận trực tuyến. Và gần đây tôi đã trải qua một số khác biệt kỳ lạ giữa việc chạy ứng dụng bằng cách nhấp đúp (trên cả Mac và Ubuntu) và chạy java -jar client.jar từ Thiết bị đầu cuối. Khi tôi mở máy khách bằng cách nhấp đúp, nó sẽ không cho phép tôi đăng nhập, trong khi mọi thứ hoạt động tốt nếu tôi chạy nó từ Terminal.Java - Sự khác biệt của việc nhấp đúp và chạy từ Terminal để mở tệp .jar là gì?

Tôi biết mô tả có thể quá mơ hồ, nhưng tôi tự hỏi liệu có bất kỳ sự khác biệt chung nào giữa hai cách chạy tệp .jar này hay không. Cảm ơn!

Môi trường của tôi Java được hiển thị dưới đây:

$ 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

Nó thực sự phụ thuộc vào những gì hệ điều hành được cấu hình để làm khi nhấp đúp vào một cái bình. Của tôi được cấu hình để mở nó trong winrar (tôi có xu hướng mở lọ thường xuyên hơn chạy chúng). – Taylor

+0

Nó được cấu hình để mở với Oracle Java 7 Runtime trên máy tính của tôi. Vì vậy, nó không phải là vấn đề đó. Và khách hàng mở chính xác, hiển thị giao diện tốt. Bất kỳ vấn đề cấu hình có thể khác mà bạn thấy? Cảm ơn! – dirkchen

+0

Có thể một số tập lệnh đăng nhập đang chạy khi bạn đang ở trong thiết bị đầu cuối, sao cho PATH hoặc CLASSPATH của bạn khác nhau và do đó môi trường hoạt động khác nhau trong cả hai trường hợp? Cách khác, tôi không biết cách Ubuntu hoặc Mac đặt thư mục làm việc của họ khi bạn bấm đúp vào một tệp, nhưng có lẽ đó là một đầu mối. – Omaha

Trả lời

5

Tùy thuộc vào phương pháp sử dụng để gọi chương trình, thư mục làm việc hiện tại có thể thay đổi. Khi chạy qua java -jar thư mục hoạt động được thiết lập bởi thiết bị đầu cuối, dễ dàng nhận dạng được bằng lời nhắc. Khi nhấp đúp, thư mục mặc định là thư mục chính của người dùng. Xét nghiệm nhanh cho cuộc biểu tình:

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

Giả sử JAR tọa lạc tại /home/test/Applications, nó sẽ hiển thị các con đường này khi chạy từ thiết bị đầu cuối. Khi nhấp đúp, chỉ cần /home/test. Do đó, đường dẫn có thể giống hệt nhau bằng cả hai phương pháp (khi lưu trữ nằm ở ~), nhưng không nhất thiết - một khó khăn khi cố gắng gỡ lỗi/tạo lại hành vi bất thường.

+0

Cảm ơn rất nhiều vì câu trả lời! Nó thực sự rõ ràng và hữu ích! – dirkchen

+0

Hoạt động nhấp đúp trên Ubuntu 14.04 có thể là lỗi do trực quan hơn nên thư mục hiện tại phải là thư mục cha của thư mục jar. Đó là cách nhấp đúp được thực hiện trên windows 10. Điều này cho phép nhấp đúp chuột để tận dụng lợi thế của đường dẫn tương đối. – simgineer

Các vấn đề liên quan