compilation - javassist编译错误没有这样的类

我正在使用javassist编写程序来编译另一个Java类。生成的类使用一些对象,例如BigDecimal, List, ArrayList。因此,我导入了他们的软件包:

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却不能。这个问题有什么线索吗?谢谢!

最佳答案

顾名思义,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开始,它确实支持导入完全限定的类名。因此,使用该版本,您的原始代码也应该有效。

https://stackoverflow.com/questions/17874455/

相关文章:

vb.net - 在VB.net故障中引发事件

file - 处理时output.println()中的错误

c# - NHibernate错误:s

c# - 编译器不一致的可访问性错误,将嵌套类作为函数参数传递

twitter-bootstrap - 导航栏中的两行,一列跨越两行

objective-c - 错误Maddage : expected expression? [du

c# - 为什么这一行代码与上面两行不同?

generics - Ada : invalid prefix in selected compon

objective-c - 使用typedef枚举时,返回类型枚举EnumName返回枚举成员时会产

compiler-errors - 为自定义MATLAB工具箱执行编译器脚本时出错