2009-06-04 30 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

相關問題