2011-08-21 15 views
6

Quando si utilizza javac (o l'attività ant), il messaggio di errore non include l'intero percorso file, include solo il nome del file. Ad esempio,javac messaggio di errore non visualizza l'intero percorso file

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

Quello che vorrei è,

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

mio problema è che quickfix vim non funziona se non è dato l'intero percorso del file, non solo il nome del file. Con solo il nome del file, un nuovo file vuoto viene aperto dopo l'esecuzione: make.

sto usando:

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

Ho trovato se si utilizza gcj o il compilatore di compilazione eclipse, verrà stampato il percorso completo. Ma la formica stamperà anche un errore JAVA_HOME non trovato. Non so come risolvere questo. –

+0

Sono sicuro al 99% che si tratti di un bug di Ubuntu. Ho appena passato il mio portatile a Ubuntu 11.10 da FreeBSD. Posso vedere l'intero percorso con un errore javac anche sul mio server FreeBSD. Sto ancora cercando la soluzione ... – sarumont

risposta

1

non credo ci è un modo semplice per farlo.

Tuttavia, credo che ci sia un modo complicato. Fondamentalmente implica la scrittura del proprio compilatore di compilatori che sfrutta l'abilità di un'installazione JDK per caricare ed eseguire il compilatore Java all'interno di un programma in esecuzione. È necessario implementare molte cose, ma la cosa fondamentale è un processore diagnostico che formatta i messaggi di errore del compilatore nel modo in cui sono necessari per essere formattati.

Ecco alcuni link pertinenti:

  • Package javax.tools - fornisce interfacce per strumenti che possono essere invocati da un programma, ad esempio, compilatori.
  • JavaCompiler - l'interfaccia implementata dal compilatore
  • FileObject - l'interfaccia che il compilatore utilizza per rappresentare i file di origine; per esempio. in diagnostica. Nota il metodo toUri()!