камни преткновения изобилуют при попытке запустить org.hibernate.tool.ant.EnversHibernateToolTask - PullRequest
3 голосов
/ 05 июня 2009

Я пытаюсь запустить org.hibernate.tool.ant.EnversHibernateToolTask, как указано в довольно кратком руководстве по Envers (2-я строка таблицы, Документация содержит ссылку на PDF). Вот моя муравьиная задача, настроенная таким образом, что она успешно находит org.hibernate.tool.ant.EnversHibernateToolTask ​​и org.hibernate.tool.ant.HibernateToolTask; теперь он не может найти org.apache.tools.ant.Task, и у меня возникает ощущение, что я делаю что-то не так.

<target name="schemaexport" depends="init"
        description="Exports a generated schema to DB and file">
<taskdef name="hibernatetool"
    classname="org.hibernate.tool.ant.EnversHibernateToolTask"
        classpath=".;C:\appl\Java\jre6u13\lib\ext\envers-1.2.0.ga-hibernate-3.3.jar;C:\appl\Java\jre6u13\lib\ext\hibernate-tools.jar" />
<!--classpathref="${schema.classpath}"/>-->
<hibernatetool destdir=".">
    <classpath>
        <fileset refid="lib.hibernate" />
        <path location="${build.dir}" />
    </classpath>
<jpaconfiguration persistenceunit="ConsolePU" />
<hbm2ddl
    drop="false"
    create="true"
    export="false"
    outputfilename="versioning-ddl.sql"
    delimiter=";"
    format="true"/>
</hibernatetool>
</target>

Раньше я никогда не выполнял пользовательскую задачу по муравью, поэтому я, вероятно, упускаю что-то действительно простое. Какие-либо предложения? Я не знаю, что указать для пути к классам в задаче hibernatetool, для которой я не могу найти никакой документации за пределами элементарного javadoc .

edit: Хорошо, некоторые конкретные вопросы, чтобы попытаться добраться до этого по частям ...

  1. в какой банке должен быть org.apache.tools.ant.Task, и почему муравей не может ее найти?
  2. где находятся документы о том, как использовать HibernateToolTask? (Я предполагаю, что EnversHibernateToolTask ​​должен работать так же)

обновление (2009-06-18): ОК, наконец-то я набрался смелости, чтобы попытаться добиться определенного прогресса, и добился определенных успехов. Я могу заставить его почти работать, выполнив две вещи:

  1. запустить ant schemaexport из командной строки, а не из Eclipse, чтобы запустить мою цель schemaexport. (ant в Eclipse не может найти org / apache / tools / ant / Task, и я не знаю, как установить путь к классу Ant в eclipse (в отличие от пути к классам в элементе taskdef; каким-то образом я должен сказать ant использовать classpath, чтобы найти свой собственный проклятый класс, когда он запускает пользовательскую задачу. Это безумие .... grrr ...)
  2. обеспечение того, что мой classpath содержит все jar-файлы, которые я просто принимаю как должное, вставив в каталог /lib/ext моей JRE:

    • Envers-1.2.0.ga-зимуют-3.3.jar
    • hibernate3.jar
    • зимуют-tools.jar
    • SLF4J-log4j12-1.5.6.jar
    • slf4j-api-1.5.6.jar
    • log4j-1.2.15.jar

Теперь у меня новая проблема:

СТРОИТЬ НЕУДАЧИ C: \ Дека \ проектируемый \ Java \ тест-базы данных \ build.xml: 61: Проблемы в создании конфигурации на для JPA. Вы не забыли добавить спящий EntityManager путь к классу?

[[[[[закричать]]]]]

обновление Похоже, мне тоже нужно

  • зимуют-entitymanager.jar
  • зимуют-annotations.jar

и я ВСЕ ЕЩЕ получаю ошибки загрузчика классов:

BUILD FAILED
java.lang.NoClassDefFoundError: javax/persistence/PersistenceException
        at java.lang.Class.getDeclaredConstructors0(Native Method)
        at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
        at java.lang.Class.getConstructor0(Class.java:2699)
        at java.lang.Class.newInstance0(Class.java:326)
        at java.lang.Class.newInstance(Class.java:308)
        at org.hibernate.tool.ant.JPAConfigurationTask.createConfiguration(JPACo
nfigurationTask.java:33)
        at org.hibernate.tool.ant.ConfigurationTask.getConfiguration(Configurati
onTask.java:54)

Как мне запустить это без необходимости использовать сервер J2EE?!?!?!?!?!? Какие другие файлы JAR мне нужны? Я действительно смущен и расстроен.

обновление (2009-06-23): я наконец-то получил успешную сборку. Похоже, вам нужно:

* envers-1.2.0.ga-hibernate-3.3.jar
* hibernate3.jar
* hibernate-tools.jar
* slf4j-log4j12-1.5.6.jar
* slf4j-api-1.5.6.jar 
* log4j-1.2.15.jar
* dom4j-1.6.1.jar
* hibernate-commons-annotations.ja
* a JAR containing JTA classes (Sun doesn't have a JAR file but you can download the [class files][3] yourself and make a JAR file out of it)
* a JAR containing JPA classes (I used toplink-essentials.jar from the glassfish project, per [this SO question][4])
* commons-logging-1.1.1.jar
* freemarker.jar

и обязательно использовать

<annotationconfiguration configurationfile="${some_path}/hibernate.cfg.xml"/>

вместо элемента <jpaconfiguration>, включенного в пример задачи муравья. Это все еще не работает должным образом, хотя, я не включаю таблицы envers. (

Ответы [ 2 ]

1 голос
/ 05 июня 2009

EnversHibernateToolTask ​​расширяет HibernateToolTask. Все, что мне нужно было сделать, это следующее:

<taskdef name="hibernatetool"
classname="org.hibernate.tool.ant.EnversHibernateToolTask"
        classpath="envers-1.2.0.ga-hibernate-3.3.jar" />

В противном случае было бы полезно увидеть вывод файла муравья, который вы вставили.

0 голосов
/ 02 августа 2009

тебе может понадобиться ejb3-сохранение-1.0.2.GA.jar

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...