我们在项目中使用JPA 2, Hibernate和Criteria API,为此我们需要Hibernate的模型生成器来创建元模型类。
在我们的Ant构建过程中,我们包含了hibernate- jmodelgen .jar的注释处理器来为我们生成元模型类。
问题是依赖于生成的类的类由于"symbol not found"编译错误而无法编译。
[javac] ...DocumentSpecifications.java:29: cannot find symbol
[javac] symbol : class Document_
[javac] location: package ...entity
[javac] import ...entity.Document_;
ant脚本如下所示:
<javac srcdir="@{from}"
destdir="@{to}"
source="${compile.option.source-version}"
target="${compile.option.target-version}"
debug="${compile.option.debug}"
debuglevel="${compile.option.debuglevel}"
includeAntRuntime="false"
fork="${compile.option.fork}"
classpathref="path.ivy.libs.compile"
encoding="${sourcefiles.encoding}">
<compilerarg line="${compile.option.compilerarg} -s @{metamodel}" />
</javac>
查看Ant的目标目录,可以发现元模型Java类(. Java)已经在src/metmodel文件夹中成功创建,但是没有类(.class)被编译到build/classes文件夹中。有人知道如何教Ant或Java编译器包含生成的类文件吗?
OK,找到问题了。
当错误发生时,我正在使用JDK 1.6.0_11。在1.7 JDK下可以工作。显然,在使用1.6 JDK时,您必须分多个步骤进行编译。