2012-02-20 11 views
5

Nieco mniej znaną cechą kompilatora Javy Eclipse jest to, że można run it from the command line.Kompilator Java Eclipse generuje różne ślady stosu po uruchomieniu z wiersza polecenia

Działa to dobrze (po poprawieniu kompilatora Plexus na najnowszą wersję).

Mój problem: ślady stosu są różne, gdy kompiluję kod z wiersza poleceń. Na przykład, kiedy uruchomić kompilatora w IDE, otrzymuję ten wynik:

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

ale kiedy skompilować kod z wiersza polecenia, mam to:

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

Co się dzieje tutaj? ??

Analizując plików klas z javap daje:

SourceFile: "Foo.java" 

i

SourceFile: "com.some.Foo" 

jakieś pomysły co może spowodować to?

+0

Być może masz nieoczekiwany zestaw $ CLASSPATH? – Don

Odpowiedz

0

Używam łaty plexus-compiler-eclipse (załatałem POM, aby zawierał kompilator 3.7/Helios).

W klasie EclipseJavaCompiler.CompilationUnit, jest to kod:

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

które powinny być

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

To zabawne, działa na mojej maszynie?

Win7, Java 7, Eclipse 3.8.0 (identyfikuje się jako Indigo, 20110615-0604).

+0

+1 Dzięki, że poprowadziłem mnie na właściwą drogę. –

1

Wydaje się, że zostały ustalone w splot kompilatora Zaćmienie wersji 1.9.1 (lub może inna wersja między 1.9.1 a 1.7)

Powiązane problemy