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"
任何可能导致这种情况的想法?
答案 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();
}