gpt4 book ai didi

java - 尝试运行 org.hibernate.tool.ant.EnversHibernateToolTask​​ 时遇到很多绊脚石

转载 作者:行者123 更新时间:2023-12-02 17:35:33 25 4
gpt4 key购买 nike

我正在尝试按照 rather terse guide to Envers 中的建议运行 org.hibernate.tool.ant.EnversHibernateToolTask (表的第二行,文档有 PDF 的链接)。这是我的 ant 任务,经过调整,它成功找到 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>

我以前从未完成过自定义 ant 任务,所以我可能错过了一些非常简单的东西。有什么建议么?我不知道在 hibernatetool 任务中为类路径添加什么,我找不到除 rudimentary javadoc 之外的任何文档。 .

编辑:好的,一些具体的问题来尝试解决这个问题......

  1. 哪个 jar 是 org.apache.tools.ant.Task应该在,为什么 ant 找不到它?
  2. 哪里有关于如何使用 HibernateToolTask​​ 的文档? (我假设 EnversHibernateToolTask​​ 应该工作相同)

更新 (2009-06-18):好吧,我终于鼓起勇气尝试在这方面取得一些进展并取得了一些进展。我可以通过做两件事让它几乎工作:

  1. 运行ant schemaexport从命令行,而不是从 Eclipse 内,运行我的 schemaexport目标。 (Eclipse中的ant似乎找不到org/apache/tools/ant/Task并且我不知道如何在eclipse中设置Ant类路径(与taskdef项中的类路径不同;不知何故我必须告诉ant当它运行自定义任务时,使用类路径来查找它自己的该死的类。这太疯狂了.... grrr ...)
  2. 通过坚持我的 JRE 的 /lib/ext 来确保我的类路径包含我认为理所当然的所有 jar。目录:

    • 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

现在我遇到了一个新问题:

BUILD FAILED C:\deka\proj\java\test-database\build.xml:61: Problems in creating a configurati on for JPA. Have you remembered to add hibernate EntityManager jars to the class path ?

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

更新看来我也需要

  • hibernate-entitymanager.jar
  • hibernate-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>示例 ant 任务中包含的项目。但它仍然无法正常工作,我没有包含 envers 表。 :(

最佳答案

EnversHibernateToolTask​​ 扩展了 HibernateToolTask​​。我需要做的就是以下内容:

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

否则,查看您粘贴的 ant 文件的输出将会很有帮助。

关于java - 尝试运行 org.hibernate.tool.ant.EnversHibernateToolTask​​ 时遇到很多绊脚石,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/952908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com