2011-08-21 11 views
6

Podczas używania javac (lub zadania ant) ​​komunikat o błędzie nie uwzględnia całej ścieżki do pliku, zawiera ona tylko nazwę pliku. Na przykład,Komunikat o błędzie javac nie wyświetla całej listy plików

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

Chciałbym to,

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

Moim problemem jest to, że vim quickfix nie działa, jeśli nie jest podana całą filepath, a nie tylko nazwę pliku. Przy samej nazwie pliku otwiera się nowy pusty plik po uruchomieniu: make.

Używam:

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

Znalazłem, jeśli przy użyciu gcj lub kompilatora wbudowanego eclipse, pełna ścieżka zostanie wydrukowana. Ale mrówka wydrukuje również błąd JAVA_HOME nie może znaleźć. Nie wiem, jak to rozwiązać. –

+0

Mam 99% pewności, że jest to błąd Ubuntu. Właśnie zamieniłem laptopa na Ubuntu 11.10 z FreeBSD. Widzę całą ścieżkę z błędem javac na moim serwerze FreeBSD. Wciąż szukam rozwiązania ... – sarumont

Odpowiedz

1

tam nie myśleć to prosty sposób na zrobienie tego.

Uważam jednak, że istnieje skomplikowany sposób. Zasadniczo polega to na napisaniu własnego kompilatora, który korzysta z możliwości instalacji JDK, aby załadować i uruchomić kompilator Java wewnątrz działającego programu. Musisz zaimplementować wiele rzeczy, ale kluczową rzeczą jest procesor diagnostyczny, który formatuje komunikaty o błędach kompilatora w sposób, w jaki potrzebujesz je sformatować.

Oto odpowiednie linki:

  • Package javax.tools - zawiera interfejsy do narzędzi, które mogą być wywoływane z programu, na przykład, kompilatorów.
  • JavaCompiler - interfejs implementowany przez kompilator
  • FileObject - interfejs używany przez kompilator do reprezentowania plików źródłowych; na przykład w diagnostyce. Zanotuj metodę toUri()!
Powiązane problemy