2009-03-16 33 views
8

Tôi muốn biết, java stderr thường đi đâu?java stderr đi đâu?

Tôi biết tôi có thể thay đổi stderr bằng cách sử dụng System.setErr, mà 'Reassigns "tiêu chuẩn" đầu ra lỗi "., Nhưng tôi không biết, cái nào là" chuẩn ".

Tôi muốn chỉ định câu hỏi của mình nhiều hơn: Tôi có thư viện C++ mà tôi sử dụng trong java (jni). Vấn đề là nó xuất hiện mà tôi không thể nhìn thấy đầu ra để stderr, mà đến từ thư viện C + + của tôi. Tôi gọi assert() trong thư viện C++ và không thấy đầu ra trong giao diện điều khiển, khi tôi chạy api java sử dụng thư viện.

+0

Bạn hãy thử System.stderr.writeln ("Tôi đây")? Bạn đã thấy gì? –

Trả lời

3

Theo mặc định System.err là bảng điều khiển, giống như System.out.

-1

Luồng đầu ra lỗi chuẩn đi vào bảng điều khiển. Luồng này đã mở và sẵn sàng chấp nhận dữ liệu đầu ra.

Xem java sun api để biết thêm chi tiết.

+1

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. – Linuxios

+0

Vâng, đúng vậy, tôi sẽ thay đổi nó! – Tobias

14

Nó đi vào luồng lỗi chuẩn của quy trình, bất kỳ điều gì được thiết lập thành.

  • Nếu bạn chạy ứng dụng từ bảng điều khiển, có thể nó cũng sẽ ghi vào bảng điều khiển.
  • Trong một giao diện đồ họa, thường ra/lỗi chuẩn thường bị giảm, tức là đầu ra bị mất.
  • Trong một dịch vụ (ví dụ: máy chủ web), lỗi/đầu ra chuẩn thường được ghi lại trong tệp nhật ký được xoay ở đâu đó, nhưng hoàn toàn phụ thuộc vào dịch vụ.

Hầu hết các nền tảng đều cho phép bạn chuyển hướng luồng lỗi chuẩn ở một nơi khác (ví dụ: đến tệp văn bản).

Ý tưởng của System.setErr là cho phép bạn không sử dụng luồng lỗi chuẩn của quy trình, nhưng thay đổi nó để cuộc gọi tới System.err.println v.v.

0

Tôi vừa mới viết một chương trình thử nghiệm nhỏ, thực hiện System.err.println và có vẻ như đó là đầu ra cho bảng điều khiển.

2

Trình mô tả tệp 2 của người gọi. Nơi nó đi từ đó — phụ thuộc vào người gọi. Mở giao diện điều khiển, bạn có thể chuyển hướng nó ở một nơi khác, ví dụ như:

java Example 2>> errors.log 
Các vấn đề liên quan