2012-02-20 36 views
5

Una pequeña característica conocida del compilador Java de Eclipse es que puede run it from the command line.El compilador Java de Eclipse produce diferentes seguimientos de pila cuando se ejecuta desde la línea de comando

Esto funciona bien (después de parchear compilador plexo para utilizar la última versión).

Mi problema: Las trazas de la pila son diferentes cuando compilo el código de la línea de comando. Por ejemplo, cuando corro el compilador en el IDE, consigo esta salida:

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

pero cuando compilo el código de la línea de comandos, me sale esto:

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

¿Qué está pasando aquí? ??

El análisis de los archivos de clase con javap da:

SourceFile: "Foo.java" 

y

SourceFile: "com.some.Foo" 

¿Alguna idea de lo que podría ser la causa?

+0

¿Quizás tengas un juego wonky $ CLASSPATH? – Don

Respuesta

0

Estoy usando un parche plexus-compiler-eclipse (parcheé el POM para incluir el compilador 3.7/Helios).

En la clase EclipseJavaCompiler.CompilationUnit, no es este código:

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

que debe ser

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" 
... 

¿Eso es divertido, funciona en mi máquina?

Win7, Java 7, Eclipse 3.8.0 (se identifica a sí mismo como Indigo, 20110615-0604).

+0

+1 Gracias, eso me llevó por el camino correcto. –

1

Esto parece haber sido fijado en el plexo-compilador Eclipse versión 1.9.1 (o tal vez alguna otra versión entre 1.9.1 y 1.7)

Cuestiones relacionadas