2011-08-21 37 views
6

Khi sử dụng javac (hoặc tác vụ kiến), thông báo lỗi không bao gồm toàn bộ filepath, nó chỉ bao gồm tên tệp. Ví dụ,thông báo lỗi javac không hiển thị toàn bộ filepath

$ javac src/path/to/Filename.java 
Filename.java:1: package foo.bar does not exist 
import foo.bar.Baz; 
      ^

Những gì tôi muốn là,

$ javac src/path/to/Filename.java 
src/path/to/Filename.java:1: package foo.bar does not exist 
import foo.bar.Baz; 
      ^

Vấn đề của tôi là QuickFix vim không hoạt động nếu nó không được đưa ra toàn bộ filepath, không chỉ là tên tập tin. Chỉ với tên tệp, một tệp trống mới được mở sau khi chạy: make.

Tôi đang sử dụng:

  • Debian khò khè
  • openjdk-6-jdk v6b23 ~ pre7-1
  • javac v1.6.0_23
+0

Tôi tìm thấy nếu sử dụng gcj hoặc trình biên dịch tích hợp nhật thực, đường dẫn đầy đủ sẽ được in. Nhưng kiến ​​cũng sẽ in một lỗi JAVA_HOME không thể tìm thấy. Tôi không biết cách giải quyết chuyện này. –

+0

Tôi chắc chắn 99% đây là lỗi của Ubuntu. Tôi vừa chuyển laptop sang Ubuntu 11.10 từ FreeBSD. Tôi có thể nhìn thấy toàn bộ con đường với một lỗi javac trên máy chủ FreeBSD của tôi, quá. Vẫn đang tìm giải pháp ... – sarumont

Trả lời

1

Tôi không nghĩ rằng có là một cách đơn giản để làm điều này.

Tuy nhiên, tôi tin rằng có một cách phức tạp. Về cơ bản nó liên quan đến việc viết trình biên dịch của riêng bạn mà sử dụng khả năng cài đặt JDK để tải và chạy trình biên dịch Java bên trong một chương trình đang chạy. Bạn cần phải thực hiện rất nhiều thứ, nhưng điều quan trọng là một bộ xử lý chẩn đoán định dạng các thông báo lỗi trình biên dịch theo cách mà bạn cần chúng được định dạng.

Dưới đây là một số liên kết có liên quan:

  • Package javax.tools - cung cấp giao diện cho công cụ này có thể được gọi từ một chương trình, ví dụ, trình biên dịch.
  • JavaCompiler - giao diện được thực hiện bởi trình biên dịch
  • FileObject - giao diện trình biên dịch sử dụng để biểu diễn tệp nguồn; ví dụ. trong chẩn đoán. Lưu ý phương thức toUri()!
Các vấn đề liên quan