Я пытаюсь включить прибор Hibernate для объектов в проекте Maven. Инструментарий работает нормально на объектах с только полями стандартных типов, определенных Java API (String, BigDecimal и т. Д.), Но когда задача инструментария пытается работать над классами, которые имеют поля типов, определенные другими классами в моем проекте, она не со следующей ошибкой:Сбой преобразователя аппаратуры Hibernate: не удается найти класс (HHH000373)
[instrument] processing class : com.test.entity.EntityWithCustomTypes; file = C:\Project\Project-ejb\target\classes\com\test\entity\EntityWithCustomTypes.class
Mar 21, 2013 10:00:24 AM org.hibernate.bytecode.internal.javassist.JavassistClassTransformer doTransform
ERROR: HHH000373: Unable to transform class: cannot find com.test.bo.CustomType
Я пытался намеренно инструментированием класса CustomType (который не должен быть необходимым); инструментарий обрабатывает его, но он по-прежнему вызывает ошибки на EntityWithCustomTypes.
Вот плагин, который я использую в моем pom.xml; Проект был создан с использованием архетипа JBoss 7 Java EE, и я пытаюсь выполнить инструментовку в модуле EJB POM:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<configuration>
<tasks>
<taskdef name="instrument" classname="org.hibernate.tool.instrument.javassist.InstrumentTask">
<classpath>
<path refid="maven.dependency.classpath" />
<path refid="maven.compile.classpath" />
<path refid="maven.runtime.classpath" />
<path refid="maven.plugin.classpath" />
<dirset dir="${project.build.outputDirectory}" />
</classpath>
</taskdef>
<instrument verbose="false">
<fileset dir="${project.build.outputDirectory}">
<include name="**/entity/*.class" />
</fileset>
</instrument>
</tasks>
</configuration>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.10.Final</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.1.GA</version>
</dependency>
</dependencies>
</plugin>
я могу проверить, что фаза компиляции генерирует соответствующий класс (CustomType) , поэтому я не могу понять, почему JavassistClassTransformer Hibernate не может его найти.
Вы правы; Спасибо, что указал мне в сторону джавассиста. Я использовал еще более старую версию (3.12.1), так как я ошибочно нашел ** старый ** репозиторий Maven. Обновление до версии 3.17.1 устраняет ошибку сборки, но, как вы указали, она разбивает инструментарий; мои якобы лениво загруженные поля с нетерпением загружаются так же, как и раньше. Таким образом, цель побеждена. Я отмечаю, что javassist-3.16.0 все еще имеет какую-либо ошибку, вызвав ошибку сборки, так что ее нет. 3.17.0 компилируется, но я подозреваю, что он разбивает инструменты так же, как 3.17.1; проверит, хотя. – Sumitsu
Подтвержденные версии 3.17.0 и 3.17.1 позволяют инструментальным средствам находить нужные им классы, но фактически не позволяют им работать. Все, что было до 3.17.0, приводит к сбою аппаратуры с ошибками, которые я описал. – Sumitsu