2012-05-01 37 views
8

Tôi cố gắng để viết giao diện điều khiển ứng dụng Java nào, mã này là khá đơn giản:Java: System.out.println() nên viết thư cho giao diện điều khiển, nhưng nó không

public class ConsoleTest { 
    public static void main(String[] args) { 
     System.out.println("test"); 
    } 
} 

Nếu tôi chạy ứng dụng này từ Eclipse, sau đó tôi thấy "test" trong "Console" của Eclipse, nhưng nếu tôi xuất ứng dụng của mình dưới dạng "tệp JAR Runnable" và chạy nó từ Windows XP cmd.exe thì không có gì được lặp lại với bảng điều khiển.

Về mặt an toàn, tôi đã cố gắng kiểm tra System.console(), trả về null.

Điều gì có thể sai?

+1

Mã của bạn hoạt động tốt cho tôi. Khi bạn chạy nó từ cmd.exe, những gì * làm * bạn thấy? –

+1

tôi nghĩ 'System.console()' sẽ trả về null trong nhật thực. –

+0

Làm thế nào để bạn chạy bình từ dòng lệnh? – Attila

Trả lời

15

Làm thế nào bạn có đang chạy chương trình của bạn bên ngoài nhật thực?

Bạn nên sử dụng dòng lệnh như

java -jar yourjar.jar

hoặc

java -cp yourjar.jar ConsoleTest

Nếu bạn đang sử dụng thỉnh thoảng javaw thay vì không có giao diện điều khiển đầu ra sẽ được sản xuất. STDOUT của javawnull. Có lẽ đây là những gì sẽ xảy ra khi bạn nhấp vào tệp jar của bạn.

+0

AlexR, bạn nói đúng, cảm ơn, tôi đã cố gắng chạy ứng dụng của tôi như bạn đã đề xuất, nó hoạt động. Nhưng đây là một chút đau đớn để chạy ứng dụng mỗi lần theo cách như vậy, có cách nào để làm cho nó hoạt động ngay khi tôi gõ 'yourjar.jar' và nhấn Enter? –

+2

@Dmitry Frank, chương trình đang chạy bằng cách nhấp vào tệp jar không an toàn. Nó phụ thuộc vào việc ánh xạ phần mở rộng 'jar' vào chương trình thực thi nó (theo mặc định' javaw') trên máy của máy khách. Nhiều nhà phát triển thay đổi ánh xạ này thành 'winzip' vì họ muốn xem nội dung của tệp jar bằng cách nhấp vào nó.Vì vậy, cách tốt nhất là viết tập tin «bat' cho windows và shell script cho Unix để thực thi chương trình java hoặc sử dụng WebStart. – AlexR

+0

cảm ơn, nhưng dù sao tôi muốn có một số cách để biên dịch ứng dụng của tôi dưới dạng ứng dụng "Giao diện điều khiển" và javaw sẽ chạy ứng dụng đó theo cách tương tự như 'java -jar myapp.jar'. Nó sẽ làm việc ít nhất cho những người không thay đổi thiết lập của mình =) Đáng tiếc rằng không có tùy chọn như vậy. –

1

Rất có thể tệp jar chạy được của bạn không hoạt động như bạn mong đợi và thực sự không chạy lớp ConsoleTest của bạn.

2

Hãy thử biên dịch nó thành một lớp từ dòng lệnh và sau đó chạy nó. Điều đó có hiệu quả không?

javac ConsoleTest.java 
java ConsoleTest 
+0

Huh, nó hoạt động! Cảm ơn. Trên thực tế @ AlexR là đúng, tôi đã cố gắng chạy ứng dụng của tôi như anh ấy gợi ý, và nó hoạt động. –

0

Giống như những gì Hovercraft Full Of Lươn viết, biên dịch file java sử dụng cmd.exe với lệnh sau đây:

javac ConsoleTest.java 

Sau đó, điều này sẽ tạo ra một file .class, và chúng tôi muốn biên dịch với lệnh này:

java ConsoleTest 

Sau đó, màn hình sẽ hiển thị đầu ra "thử nghiệm".

4

Bạn cần chạy tệp jar của mình từ dòng lệnh.

Nếu bạn nhấp đúp vào nó, bạn sẽ không thể thấy các hoạt động dòng lệnh đang chạy trong nền. Các tệp Jar thường được chạy bằng cách nhấp đúp khi chúng liên quan đến GUI.

Để chạy một file jar từ một dấu nhắc lệnh, chỉ cần làm điều này:

java -jar ConsoleTest.jar 

Giả sử bạn đã thiết lập biến môi trường cho java.exe và thư mục hiện có file jar.

Nếu cách này không hiệu quả, thì có thể đó không phải là lỗi của mã của bạn. Cũng có khả năng tệp kê khai trỏ đến lớp Chính được thiết lập không chính xác.

+0

cảm ơn bạn, bạn đã đúng. Nhưng có cách nào để làm cho nó hoạt động chỉ khi tôi gõ 'consoletest.jar'? –

+0

Chỉ cần gõ consoletest.jar trong cmd wont help vì nó sẽ giống như nhấp đúp vào nó. Tuy nhiên, bạn có thể tạo một tập tin batch chạy java -jar consoletest.jar khi bạn nhấp vào nó – EnKrypt

+0

tất nhiên tôi hiểu rằng việc gõ đó cũng giống như việc kích đúp vào nó. Nhưng tôi muốn có một số cách để biên dịch ứng dụng của tôi dưới dạng ứng dụng "Giao diện điều khiển" và ứng dụng này sẽ hoạt động bằng cách nhấp đúp chính xác giống như ứng dụng được chạy bởi 'java -jar myapp.jar'. Tôi thấy không có lý do để không cung cấp tùy chọn như vậy, như xa như các tập tin batch và gõ tay là đau đớn. –

-1

bạn phải cài đặt java jdk và thêm thư mục gốc chứa thư mục java.exe vào thư mục hệ thống của bạn, bạn sẽ tìm thấy thêm thông tin trong hướng dẫn cài đặt của jdk.

và sau đó chạy tập tin trong giao diện điều khiển bằng lệnh

> java file.java 
+0

Tôi đã bỏ phiếu nếu tôi có danh tiếng đó. Câu trả lời của bạn không liên quan đến vấn đề và thậm chí là một đoạn lệnh nhỏ mà bạn đặt sai là – EnKrypt

+0

xin lỗi, tôi chỉ muốn nói rằng bạn phải sử dụng lệnh java là một phần của java jdk và đảm bảo rằng môi trường biến được cấu hình tốt.Tôi biết điều này cho các tập tin .java nhưng nó hoạt động quá cho các tập tin .jar với nhiều đối số. –

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