2012-02-20 20 views
5

Một tính năng ít biết về trình biên dịch Java của Eclipse là bạn có thể run it from the command line.Trình biên dịch Java của Eclipse tạo ra các dấu vết ngăn xếp khác nhau khi chạy từ dòng lệnh

Điều này hoạt động tốt (sau khi vá trình biên dịch plexus để sử dụng bản phát hành mới nhất).

Vấn đề của tôi: Dấu vết ngăn xếp khác khi tôi biên dịch mã từ dòng lệnh. Ví dụ, khi tôi chạy trình biên dịch trong IDE, tôi nhận được kết quả này:

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

nhưng khi tôi biên dịch mã từ dòng lệnh, tôi có được điều này:

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

gì đang xảy ra ở đây? ??

Phân tích các tập tin lớp học với javap cho:

SourceFile: "Foo.java" 

SourceFile: "com.some.Foo" 

Bất cứ ý tưởng gì có thể gây ra điều này?

+0

Có lẽ bạn có một bộ $ CLASSPATH có thể thắng? – Don

Trả lời

0

Tôi đang sử dụng một bản vá plexus-compiler-eclipse (Tôi đã vá POM để bao gồm trình biên dịch 3.7/Helios).

Trong lớp EclipseJavaCompiler.CompilationUnit, có mã này:

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

mà nên

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

Thật vui, nó hoạt động trên máy của tôi?

Win7, Java 7, Eclipse 3.8.0 (tự xác định là Indigo, 20110615-0604).

+0

+1 Cảm ơn, điều đó đã dẫn tôi đi đúng hướng. –

1

này dường như đã được cố định trong đám rối-biên dịch-eclipse phiên bản 1.9.1 (hoặc có thể một số phiên bản khác giữa 1.9.1 và 1.7)

Các vấn đề liên quan