Java-компилятор Eclipse производит различные трассировки стека при запуске из командной строки - PullRequest
5 голосов
/ 20 февраля 2012

Немного известной особенностью Java-компилятора Eclipse является то, что вы можете запускать его из командной строки .

Это работает хорошо (после исправления 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"

Есть идеи, что может вызвать это?

Ответы [ 3 ]

1 голос
/ 20 июля 2012

Это, похоже, исправлено в версии 1.9.1 plexus-compiler-eclipse (или, может быть, в какой-то другой версии между 1.9.1 и 1.7)

1 голос
/ 20 февраля 2012
$ 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).

0 голосов
/ 21 февраля 2012

Я использую пропатченный plexus-compiler-eclipse (я пропатчил POM, чтобы включить компилятор 3.7 / Helios).

В классе EclipseJavaCompiler.CompilationUnit есть этот код:

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

, который должен быть

    public char[] getFileName()
    {
        return sourceFile.toCharArray();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...