将hyperjaxb采购订单教程导入Eclipse
我想将本教程中的示例应用程序导入到eclipse中。 我一直收到与文件放置位置有关的错误。 当我创建一个Main类来运行教程中的代码时,我得到Eclipse的编译错误,当Main类在构建路径中时,没有看到所需的包,或者我得到了一个
启动错误:Section不包含主类型
当Main类不在构建路径中时。
到目前为止,我已采取以下步骤:
- 下载zip
- 导航到cmd.exe中的文件夹
- 运行mvn clean install
- 在eclipse中创建新的maven项目
- 将以下内容添加到pom.xml中
- 在eclipse中运行Maven更新项目
- 创建target / generated-sources / xjc文件夹
- 将hyperjaxb生成的文件导入target / generated-sources / xjc
- 在eclipse项目的其他地方创建一个Main类来运行测试代码
- 开始将本教程的“使用JAXB和JPA”部分中的代码添加到Main类
上述步骤导致上述错误。 什么是在Eclipse中使其工作的分步说明?
好的,这将是漫长的。
首先,让我们来解决我们开始的问题。 在这个问题中,我们终于发现教程工作正常,找到生成的Java代码时遇到了一些困难。
作为旁注,本教程是一个使用maven-hyperjaxb3-plugin
的Maven项目。 在Maven中,标准约定是在target\generated-sources\myTool
生成代码。 JAXB的代码生成工具称为XJC,因此模式派生代码的标准约定是target\generated-sources\xjc
。 maven-jaxb2-plugin
也是如此。
所以从现在开始,我认为PO教程工作正常:生成代码,使用HSQLDB数据库运行往返测试等。
你现在要问的基本上是三件事:
- 如何切换到MySQL?
- 如何使用hbm2ddl生成数据库模式?
- 如何将项目导入Eclipse?
请注意,其中没有一个特定于Hyperjaxb。
让我们开始吧。
切换到MySQL
首先,您必须在pom.xml
中用MySQL替换HSQLDB。 删除这个:
hsqldb hsqldb 1.8.0.7 test
并添加这个:
mysql mysql-connector-java 5.0.5 test
接下来,编辑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
有了这个:
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
我个人目前手头没有MySQL数据库,所以我无法真正测试往返。 所以我会评论出来
在pom.xml
。
如果您有一个数据库,只需在提到的persistence.properties
文件中配置正确的URL /用户名/密码即可。
此时,您的Maven项目被重新配置为使用MySQL。 如果没有注释掉往返测试并且数据库可用,则圆形测试应该与DB一起运行,即创建模式,导入样本XML,读回并比较alpha和omega。
所以现在我们有关于MySQL的教程,可以继续。
生成数据库模式
弄清楚这是一个棘手的部分。
要在文件中生成数据库模式,必须使用hbm2ddl
工具。 有一些Maven插件,在Hibernate 3的情况下,似乎Codehaus插件是领先的插件。 最后,我已经找到了以下配置。 您必须将以下插件添加到您的pom.xml
( project/build/plugins
):
org.codehaus.mojo hibernate3-maven-plugin 3.0 generate-schema compile run org.hibernate.javax.persistence hibernate-jpa-2.0-api 1.0.0.Final org.hibernate hibernate-entitymanager 3.6.5.Final mysql mysql-connector-java 5.0.5
几件事情很重要:
- Hyperjaxb3生成JPA注释,因此您必须使用
jpaconfiguration
。 - 因此,必须在编译阶段执行
hibernate3-maven-plugin
(您需要类来读取注释,因此必须在那时编译它们)。 - 您必须将已编译的类(
${project.build.directory}/classes
)包含到hibernatetool的类路径中,以便它可以发现类和读取注释。 - 你必须让hibernatetool知道你在哪里找到你的Hibernate属性(
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。
将项目导入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.xml
添加一个“ignore”配置,让Eclipse感到高兴。
现在用F5刷新项目。 而且你已经完成了。
可能是Eclipse没有立即选择所有内容,因此您可能需要更新Maven项目(Alt + F5)。 这就是它现在在我的工作区中的样子:
没有错误,一切都到位。 干净整洁。
如果您的数据库设置正确(在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类
祝你的项目顺利,成功。
解决方案包括右键单击eclipse项目中的各个文件夹,选择Build Path..
然后使用试错法选择“ Use as Source Folder
,“ Configure Build Path
”或“ Remove from Build Path
以尝试重新创建各种文件夹项目架构所需的构建路径。 lexicore的回答中的一些概念是有帮助的,但最终需要在应用程序编组之前在eclipse中手动构建路径更改而不会抛出错误。
必须有一种方法来进化hyperjaxb的体系结构,以便不需要这些手动步骤。 我认为改变pom
以正确定义构建路径将是一个短期解决方案。 JAXB允许将生成的代码导入到eclipse中,而不需要所有这些手动配置要求,这可能是因为JAXB jar中的代码可能与目录结构无关。