2013-06-06 11 views
5

Java derslerimi derlemek için JDT kullanıyorum. BatchCompiler bir dizge döndürür ancak sütun ve satır bilgileriyle ilgili bir dizi problem/hataya ihtiyacım var. compiler.compile (adet); Hatayı printwriter'e yazdırır, compiler.resolve (unit) tam olarak istediğimi yapar ancak sadece bir java dosyası derleyebilir. JDT derleyicisini program aracılığıyla nasıl kullanabilirim?

Ben bu şekilde bir derleyici nesnesi oluşturuldu:

Compiler compiler = new Compiler(env, DefaultErrorHandlingPolicies.exitAfterAllProblems(), new CompilerOptions(), requestor, new DefaultProblemFactory()); 

Ve derleyici dosya ve dosya içeriğini içeren CompilationUnits oluşturun.

CompilationUnit[] units = project.toCompilationUnit(); 

AFAIK, derlemek için 2 yol vardır, bunlardan biri de sütun bilgilerini dönmez çünkü benim için kullanışlı değil, (birimleri) onun PrintWriter için boşluk ve baskılar hataları ve sorunları döndüren yöntemi derlemek olduğunu . Diğer yol, çözüm (birim) yöntemidir, ancak yalnızca bir CompilationUnit ile çalışabilir.

compiler.resolve(units[index], true, true, true); 

JDT derleyicisini birden çok dosyayı derlemek için program aracılığıyla nasıl kullanabileceğimi bilen var mı?

+0

CompilationUnits üzerinden döngü yapmak ve 'resol'u çağırmak için herhangi bir sorun var mı? –

+0

@UnniKris Çalışıyor, ancak söylediğim gibi, çözüm yalnızca bir CompilationUnit parametresi alıyor. CompilationUnits [] sorunu çözmek değil, çünkü birçok .java dosyaları içeren bir proje derlemeye çalışıyorum çünkü derleme ve bir CompilationUnit diğer CompilationUnits hakkında herhangi bir bilgi yok. –

cevap

0

org.eclipse.jdt.internal.compiler.Compiler dahili API'sidir. resolve yönteminin JavaDoc yöntemine göre: Internal API used to resolve a given compilation unit. Can run a subset of the compilation process. Bunun yerine, Java dosyalarını derleme ve derleme sorunlarını belirleme resmi yolu here olarak açıklanmıştır. Temel olarak, bir Java projesi oluşturup Eclipse'in kurucusunu çağırır, sonra projenin Java sorun belirleyicilerini sorgularsınız.

İlgili konular