2013-07-26 27 views
0

我正在寫使用了Javassist編譯另一個Java類的程序。生成的類使用一些對象,如BigDecimal, List, ArrayList。於是我進口它們的軟件包:Javassist進行編譯錯誤沒有這樣的類

ClassPool pool = ClassPool.getDefault(); 
pool.insertClassPath(classDir); //classDir is my program Directory 
pool.importPackage("java.util.List"); 
pool.importPackage("java.math.BigDecimal"); 
pool.importPackage("java.util.ArrayList"); 

然後我讓使用CtField.make()每個對象的某些對象。當我使用Javassist進行編譯,它拋出錯誤:

CannotCompileException: [source error] no such class: BigDecimal 

表工作正常,但是,BigDecimal的或ArrayList的都沒有。有什麼線索可以解決這個問題嗎?謝謝!通過添加確切的CLASSPATH new java.math.BigDecimal()new BigDecimal()

回答

0

改變解決了這個問題!

+2

當然,那麼你可以刪除所有import語句。就像在普通的Java代碼中一樣。 –

3

顧名思義,ClassPool.importPackage()JavaDoc)用於導入包,而不是類。考慮到,你應該使用:

ClassPool pool = ClassPool.getDefault(); 
pool.insertClassPath(classDir); //classDir is my program Directory 
pool.importPackage("java.util"); 
pool.importPackage("java.math"); 

注:從Javassist是3.14開始,它支持進口也完全合格,類名。因此,對於該版本,您的原始代碼也應該有效。

相關問題