从命令行运行时,Eclipse Java编译器会生成不同的堆栈跟踪

时间:2012-02-20 17:32:24

标签: java eclipse compiler-construction

Eclipse Java编译器的一个小知识就是你可以run it from the command line

这很好用(在修补plexus编译器以使用最新版本之后)。

我的问题:当我从命令行编译代码时,堆栈跟踪是不同的。例如,当我在IDE中运行编译器时,我得到了这个输出:

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

但是当我从命令行编译代码时,我得到了这个:

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

这里有什么?

使用javap分析类文件会给出:

SourceFile: "Foo.java"

SourceFile: "com.some.Foo"

任何可能导致这种情况的想法?

3 个答案:

答案 0 :(得分: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"
...

那很有趣,它可以在我的机器上运行吗?

Win7,Java 7,Eclipse 3.8.0(自称为Indigo,20110615-0604)。

答案 1 :(得分:1)

这似乎已在plexus-compiler-eclipse版本1.9.1中修复(或者可能是1.9.1和1.7之间的其他版本)

答案 2 :(得分:0)

我正在使用修补的plexus-compiler-eclipse(我修补了POM以包含3.7 / Helios编译器)。

在课程EclipseJavaCompiler.CompilationUnit中,有以下代码:

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

应该是

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