2012-02-20 10 views
5

Una caratteristica poco conosciuta del compilatore Java di Eclipse è che è possibile run it from the command line.Il compilatore Java di Eclipse produce diverse tracce dello stack quando viene eseguito dalla riga di comando

Questo metodo funziona bene (dopo l'applicazione di patch plesso-compilatore di utilizzare la versione più recente).

Il mio problema: Le tracce dello stack sono diverse quando compilo il codice dalla riga di comando. Ad esempio, quando si esegue il compilatore nell'IDE, ottengo questo output:

 at com.some.Foo.method(Foo.java:312) 

ma quando compilo il codice dalla riga di comando, ottengo questo:

 at com.some.Foo.method(com.some.Foo:312) 
          ^^^^^^^^^^^^ 

Cosa sta succedendo qui? ??

Analizzando i file di classe con javap dà:

SourceFile: "Foo.java" 

e

SourceFile: "com.some.Foo" 

Tutte le idee che cosa potrebbe causare questo?

+0

Forse avete un $ CLASSPATH wonky set? – Don

risposta

0

Sto usando un patch plexus-compiler-eclipse (Ho applicato patch al POM per includere il compilatore 3.7/Helios).

Nella classe EclipseJavaCompiler.CompilationUnit, c'è questo codice:

public char[] getFileName() 
    { 
     return className.toCharArray(); 
    } 

che dovrebbe essere

public char[] getFileName() 
    { 
     return sourceFile.toCharArray(); 
    } 
1
$ cat baz/Bar.java 
class Foo { 
} 

$ java -jar eclipse/plugins/org.eclipse.jdt.core_3.8.0.v_C19.jar baz/Bar.java 

$ javap -c baz/Foo.class 
Compiled from "Bar.java" 
... 

È divertente, funziona sulla mia macchina?

Win7, Java 7, Eclipse 3.8.0 (identifica se stesso come Indigo, 20110615-0604).

+0

+1 Grazie, mi ha portato sulla strada giusta. –

1

Questo sembra essere stato risolto nella versione plesso-compiler-eclipse 1.9.1 (o forse qualche altra versione tra il 1.9.1 e 1.7)

Problemi correlati