Cod*_*Med 0 java eclipse jaxb hyperjaxb
我想将本教程中的示例应用程序导入到eclipse中.我一直收到与文件放置位置有关的错误.当我创建一个Main类来运行教程中的代码时,我得到Eclipse的编译错误,当Main类在构建路径中时,没有看到所需的包,或者我得到了一个
启动错误:Section不包含主类型
当Main类不在构建路径中时.
到目前为止,我已采取以下步骤:
上述步骤导致上述错误. 什么是在Eclipse中使其工作的分步说明?
好的,这将是漫长的.
首先,让我们来解决我们开始的问题.在这个问题我们终于想通了,该教程是精干活,有只是一些很难找到生成的Java代码.
作为旁注,本教程是一个使用的Maven项目maven-hyperjaxb3-plugin.在Maven中,标准约定是生成代码target\generated-sources\myTool.JAXB的代码生成工具称为XJC,因此模式派生代码的标准约定是target\generated-sources\xjc.maven-jaxb2-plugin也这样做.
所以从现在开始,我认为PO教程工作正常:生成代码,使用HSQLDB数据库运行往返测试等.
你现在要问的基本上是三件事:
请注意,其中没有一个特定于Hyperjaxb.
让我们开始吧.
首先,你必须在MySQL中用MySQL替换HSQLDB pom.xml.删除这个:
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>1.8.0.7</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
并添加这个:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
接下来,编辑src/test/resources/persistence.properties.替换这个:
hibernate.dialect=org.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class=org.hsqldb.jdbcDriver
hibernate.connection.username=sa
hibernate.connection.password=
hibernate.connection.url=jdbc:hsqldb:target/test-database/database
hibernate.hbm2ddl.auto=create-drop
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
hibernate.jdbc.batch_size=0
Run Code Online (Sandbox Code Playgroud)
有了这个:
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.username=...
hibernate.connection.password=...
hibernate.connection.url=jdbc:mysql://localhost/hj3
hibernate.hbm2ddl.auto=create-drop
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
hibernate.jdbc.batch_size=0
Run Code Online (Sandbox Code Playgroud)
我个人目前手头没有MySQL数据库,所以我无法真正测试往返.所以我会评论出来
<!--roundtripTestClassName>RoundtripTest</roundtripTestClassName-->
Run Code Online (Sandbox Code Playgroud)
在pom.xml.
如果您手边有数据库,只需在上述persistence.properties文件中配置正确的URL /用户名/密码即可.
此时,您的Maven项目被重新配置为使用MySQL.如果没有注释往返测试并且数据库可用,则圆形测试应该与DB一起运行,即创建模式,导入样本XML,读回并比较alpha和omega.
所以现在我们有关于MySQL的教程,可以继续.
弄清楚这是一个棘手的部分.
为了在文件中生成数据库模式,您必须使用该hbm2ddl工具.有一些Maven插件,在Hibernate 3的情况下,似乎Codehaus插件是领先的插件.最后,我已经找到了以下配置.您必须将以下插件添加到您的pom.xml(project/build/plugins):
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>3.0</version>
<executions>
<execution>
<id>generate-schema</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<configuration>
<hibernatetool>
<classpath>
<path location="${project.build.directory}/classes" />
</classpath>
<jpaconfiguration persistenceunit="org.jvnet.hyperjaxb3.ejb.tests.pocustomized" propertyfile="src/test/resources/persistence.properties"/>
<hbm2ddl export="false" create="true" update="false" format="true" outputfilename="schema.ddl" />
</hibernatetool>
</configuration>
<dependencies>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.6.5.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
</dependency>
</dependencies>
</plugin>
Run Code Online (Sandbox Code Playgroud)
几件事情很重要:
jpaconfiguration.hibernate3-maven-plugin必须在编译阶段执行(您需要类来读取注释,因此必须在那时编译它们).${project.build.directory}/classes)包含到hibernatetool的类路径中,以便它可以发现类和读取注释.propertyfile="src/test/resources/persistence.properties").persistenceunit="org.jvnet.hyperjaxb3.ejb.tests.pocustomized").看看target/generated-sources/xjc/META-INF/persistence.xml.最后,您将获得我上面发布的配置.此时构建还应生成数据库模式target/sql/hibernate3/schema.ddl.这是第二个问题.
所以现在我们已经完成了Maven项目,让我们切换到Eclipse.
我个人不理解的是这样的事情
8.)将hyperjaxb生成的文件导入target/generated-sources/xjc
Hyperjaxb3只在这个目录中生成Java文件(在包中).所以你不要随便进口任何东西.不要尝试手动复制文件.
正确的方法是在Eclipse中使用标准的m2e插件,并将Maven项目导入Eclipse工作区.
文件>导入...>现有Maven项目>根目录>(导航到包含pom.xml教程项目的目录)>(检查pom.xml)>完成
不,你在Eclipse中有一个项目.Eclipse可能会抱怨不支持的插件目标执行hibernate3-maven-plugin.(Eclipse不知道,如何将此插件集成到Eclipse的构建周期中.)选择"不执行(添加到pom)".这将为pom.xmlEclipse 添加一个"忽略"配置,让Eclipse开心.
现在用F5刷新项目.而且你已经完成了.
可能是Eclipse没有立即选择所有内容,因此您可能需要更新Maven项目(Alt + F5).这就是它现在在我的工作区中的样子:

没有错误,一切都到位.干净整洁.
如果您的数据库设置正确(in persistence.properties),并且您已生成往返测试,则可以直接执行它(RoundtripTest> Run As> JUnit Test).这将启动实体管理器,加载XML,将其保存到数据库,加载回来并与原始数据库进行比较.
现在我们完成了.
我上面描述的Maven项目的导入也绝不是特定于Hyperjaxb3的.
不,请让我解决你的"一步一步"清单:
1.)下载zip 2.)导航到cmd.exe中的文件夹3.)运行mvn clean install
好.
4.)在eclipse中创建新的maven项目
为什么要换新的?
5.)将以下内容添加到pom.xml中
不行.你必须hbm2ddl像我一样找出正确的配置.这不是Hyperjaxb3-speicifc.
6.)在eclipse中运行Maven更新项目
好.
7.)创建target/generated-sources/xjc文件夹
不会.生成目标下的所有内容,您从不在那里手动创建任何内容.
8.)将hyperjaxb生成的文件导入target/generated-sources/xjc
我不明白你的意思.你想手动复制文件吗?
9.)在eclipse项目的其他地方创建一个Main类来运行测试代码
10.)开始将教程中"使用JAXB和JPA"部分的代码添加到Main类中
祝你的项目好运,成功.
| 归档时间: |
|
| 查看次数: |
876 次 |
| 最近记录: |