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

问题描述 投票:0回答:3

Eclipse 的 Java 编译器的一个鲜为人知的功能是您可以从命令行运行它

这效果很好(在修补 plexus-compiler 以使用最新版本之后)。

我的问题:当我从命令行编译代码时,堆栈跟踪是不同的。例如,当我在 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"

有什么想法可能会导致这种情况吗?

java eclipse
3个回答
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
投票

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


0
投票

我正在使用修补过的

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

在类

EclipseJavaCompiler.CompilationUnit
中,有这样的代码:

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

应该是

    public char[] getFileName()
    {
        return sourceFile.toCharArray();
    }
© www.soinside.com 2019 - 2024. All rights reserved.