2009-06-04 29 views
3

我试图运行org.hibernate.tool.ant.EnversHibernateToolTask​​建议在rather terse guide to Envers(表的第二行,文档有链接PDF)。这里是我的Ant任务扭捏所以它成功地找到org.hibernate.tool.ant.EnversHibernateToolTask​​和org.hibernate.tool.ant.HibernateToolTask​​;现在它找不到org.apache.tools.ant.Task,并且我感觉我正在做错事。试图运行org.hibernate.tool.ant.EnversHibernateToolTask​​时遇到绊脚石嘉豪

<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> 

我从来没有做过自定义的ant任务,所以我可能会丢失一些非常简单的东西。有什么建议么?我不知道要放什么东西在hibernatetool任务的类路径中,我找不到超过rudimentary javadoc任何文件。

编辑: OK,一些特定的Q的,试图让这个零碎...

  1. 这罐子org.apache.tools.ant.Task应该是在,为什么不能蚂蚁找到它呢?
  2. 哪里都是关于如何使用HibernateToolTask​​的文档? (我假设EnversHibernateToolTask​​应该工作一样)

更新(2009-06-18):OK,我终于搞砸了我的勇气,力图使这方面的一些进展,并取得了一些进展。我可以得到它几乎做两两件事的工作:

  1. 在命令行中运行ant schemaexport,而不是在Eclipse,运行我schemaexport目标。 (蚂蚁在Eclipse中似乎无法找到组织/阿帕奇/工具/蚂蚁/任务,我不知道如何设置Eclipse中的类路径蚂蚁(从项目的taskdef类路径不同;不知何故,我要告诉蚂蚁使用类路径中找到了自己该死的类时,它运行一个自定义的任务。这是疯了....哎呀...)
  2. 确保我的类路径中包含了所有授予在我JRE的坚持,我只是拿瓶/lib/ext目录:

    • 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

现在,我得到了一个新问题:

BUILD FAILED C:\ DEKA \凸出\​​的java \测试数据库\的build.xml:61:在创建JPA上 一个configurati 问题。你是否还记得添加 休眠的EntityManager罐子到 类路径?

[[[[[尖叫]]]]]

更新看来我还需要

  • 休眠-entitymanager.jar
  • 休眠-annotations.jar

和我仍然得到classloader错误:

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) 

我该如何运行这个w/o不得不使用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>项目中包含的样本Ant任务。它仍然无法正常工作,但我没有收到envers表。 。:(

+0

难道我的回答有帮助吗? – danieljimenez 2009-06-12 05:14:32

回答

1

EnversHibernateToolTask​​延伸HibernateToolTask​​所有我需要做的是以下几点:

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

,否则这将是有益的,看看您贴上了蚂蚁文件的输出

+0

不是很有帮助(我的大部分问题似乎都是类路径相关的),但它确实让我相信我是什么试图做并不是不可能的有人似乎已经得到它的工作。 – 2009-06-22 13:39:38

+0

我不确定你是否可以象你一样在类路径属性中填入分号分隔的路径。如果你能做到这一点,我不知道。否则,如果你在另一个问题(HBM2DDL)中看到我的其他答案,那真的是解决这个问题的最佳方法。 – danieljimenez 2009-06-23 17:08:14

-2

ü可能需要 ejb3-persistence-1.0.2.GA.jar

相关问题