1.下载hibernate源码,并构建起eclipse项目
(1)hibernate的源代码采用git管理,安装git客户端以后,通过点击https://github.com/hibernate/hibernate-orm页面右侧的“Clone in Desktop”可启动客户端将代码clone到本地。当然也可以直接使用
git clone git://github.com/hibernate/hibernate-orm.git
命令下载代码。
下载完毕后,打开根目录下的readme文件,可以看到详细的把源代码构建为不同IDE项目的说明;以及其他的一些信息。
对应文档的网站链接:
https://community.jboss.org/wiki/BuildingHibernateORM4x5x
构建IDE部分:
Eclipse
To create the Eclipse project files you can run
After changes to the dependencies you need to clean the project files and recreate them:
./gradlew cleanEclipse eclipse
See also Contributing to Hibernate using Eclipse
Idea
To create the Idea project files you can run
./gradlew idea
After changes to the dependencies you need to clean the project files and recreate them:
./gradlew cleanIdea idea
此处的gradle是hibernate所使用的自动构建工具,官网地址为:
下载地址为:http://www.gradle.org/downloads,选择一个版本进行下载
此处是Hibernate团队阐述其从Maven迁移到Gradle的原因:https://community.jboss.org/wiki/GradleWhy
至于grable,有时间会深入学习一下,感兴趣的同学可以看看这位博主的博客:
http://www.blogjava.net/wldandan/archive/2012/06/26/381532.html
言归正传,下载grable后,解压,我将其解压到了C盘根目录,解压完毕的grable所在目录为:C:\gradle-1.7,将其子目录C:\gradle-1.7\bin目录加入系统的Path变量
编译代码为eclipse项目:
(1)进入hibernate源码的根目录:
cd C:\Users\Administrator\Documents\GitHub\hibernate-orm
接着会自动下载项目所需要的依赖项,具体输出如下:
C:\Users\Administrator\Documents\GitHub\hibernate-orm>gradlew.bat eclipse
Creating properties on demand (a.k.a. dynamic properties) has been deprecated and is scheduled to be removed in Gradle 2.0. Please read http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html for information on
Deprecated dynamic property: "exportPackageVersion" on "project ':documentation'", value: "4.3.0".
Deprecated dynamic property "exportPackageVersion" created in multiple locations.
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\Users\Administrator\Documents\GitHub\hibernate-orm\build.gradle' line: 85
* What went wrong:
A problem occurred evaluating root project 'hibernate-orm'.
> org/hibernate/build/gradle/publish/auth/maven/AuthenticationManager : Unsupported major.minor version 51.0
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
此时我去查看我的环境变量,JAVA_HOME指向的是64位的JDK6,将其指向32位JDK7后再次执行
gradlew.bat eclipse
发现此时gradlew又去下载了其他的依赖包,查看hibernate-rom目录下的libraries.gradle文件,可以看到hibernate的依赖包。
重新编译过程中还是报错了,具体错误:
:hibernate-core:compileJava
警告: [options] 未与 -source 1.6 一起设置引导类路径
C:\Users\Administrator\Documents\GitHub\hibernate-orm\hibernate-core\src\main\java\org\hibernate\annotations\Loader.java:38: 错误: 编码GBK的不可映射字符
* @author L锟絪zl锟?Benke
^
C:\Users\Administrator\Documents\GitHub\hibernate-orm\hibernate-core\src\main\java\org\hibernate\annotations\ResultCheckStyle.java:29: 错误: 编码GBK的不可映射字符
* @author L锟絪zl锟?Benke
^
C:\Users\Administrator\Documents\GitHub\hibernate-orm\hibernate-core\src\main\java\org\hibernate\annotations\SQLDelete.java:37: 错误: 编码GBK的不可映射字符
* @author L锟絪zl锟?Benke
^
C:\Users\Administrator\Documents\GitHub\hibernate-orm\hibernate-core\src\main\java\org\hibernate\annotations\SQLDeleteAll.java:37: 错误: 编码GBK的不可映射字符
* @author L锟絪zl锟?Benke
^
C:\Users\Administrator\Documents\GitHub\hibernate-orm\hibernate-core\src\main\java\org\hibernate\annotations\SQLInsert.java:37: 错误: 编码GBK的不可映射字符
* @author L锟絪zl锟?Benke
^
C:\Users\Administrator\Documents\GitHub\hibernate-orm\hibernate-core\src\main\java\org\hibernate\annotations\SQLUpdate.java:37: 错误: 编码GBK的不可映射字符
* @author L锟絪zl锟?Benke
^
注: 某些输入文件使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
注: 某些输入文件使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
1 个警告
google了一下,貌似是区域语言设置的问题,需要修改为“英语(英国)”,但编译并没用中断,接着编译。我将控制面板中的区域语言设置修改后,继续观察,看其是否还会报同样的错误。
最终还是失败了:
:hibernate-entitymanager:compileJava
警告: [options] 未与 -source 1.6 一起设置引导类路径
C:\Users\Administrator\Documents\GitHub\hibernate-orm\hibernate-entitymanager\src\main\java\org\hibernate\jpa\AvailableSettings.java:290: 错误: 编码GBK的不可映射字符
* contains 鈥淐REATE SCHEMA鈥?commands. If this property is not supplied (or is explicitly {@code false}), the
^
注: 某些输入文件使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
注: 某些输入文件使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
1 个警告
:hibernate-entitymanager:processResources
:hibernate-entitymanager:classes
:hibernate-testing:generateMainLoggingClasses
Download http://repo1.maven.org/maven2/com/experlog/xapool/1.5.0/xapool-1.5.0.jar
Download http://repo1.maven.org/maven2/org/jboss/jbossts/jbossjta/4.16.4.Final/jbossjta-4.16.4.Final.jar
:hibernate-testing:compileJava
警告: [options] 未与 -source 1.6 一起设置引导类路径
注: 某些输入文件使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
注: 某些输入文件使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
1 个警告
:hibernate-testing:processResources UP-TO-DATE
:hibernate-testing:classes
:hibernate-testing:jar
:hibernate-entitymanager:generateTestJpaMetamodelClasses
此处略去部分download信息
Download http://repo1.maven.org/maven2/org/jboss/shrinkwrap/shrinkwrap-build/1.0.0-alpha-11/shrinkwrap-build-1.0.0-alpha-11.pom
FAILURE: Build failed with an exception.
* What went wrong:
Could not resolve all dependencies for configuration ':hibernate-entitymanager:testCompile'.
> Could not resolve org.jboss.arquillian:arquillian-api:1.0.0.Alpha4.
Required by:
org.hibernate:hibernate-entitymanager:4.3.0-SNAPSHOT > org.jboss.weld.arquillian.container:arquillian-weld-ee-embedded-1.1:1.1.2.Final > org.jboss.arquillian:arquillian-spi:1.0.0.Alpha4
> Could not GET 'http://repository.jboss.org/nexus/content/groups/public/org/jboss/arquillian/arquillian-api/1.0.0.Alpha4/arquillian-api-1.0.0.Alpha4.pom'.
> The target server failed to respond
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 20 mins 17.755 secs
猜测还是和区域和语言有关,因为之前已经在控制面板修改过,重新进入hibernate-rom根目录执行gradlew.bat eclipse再次尝试编译。
又是一堆download信息后,编译开始,盯着编译的命令窗口的输出,关注其是否还会因为编码报错。
:hibernate-osgi:eclipseJdt
:hibernate-osgi:eclipseProject
:hibernate-osgi:eclipse
:hibernate-proxool:generateMainLoggingClasses
Download http://repo1.maven.org/maven2/proxool/proxool/0.8.3/proxool-0.8.3.pom
Download http://repo1.maven.org/maven2/proxool/proxool/0.8.3/proxool-0.8.3.jar
:hibernate-proxool:generateSources
:hibernate-proxool:eclipseClasspath
:hibernate-proxool:eclipseJdt
:hibernate-proxool:eclipseProject
:hibernate-proxool:eclipse
:hibernate-testing:generateSources UP-TO-DATE
:hibernate-testing:eclipseClasspath
Download http://repo1.maven.org/maven2/org/jboss/jbossts/jbossjta/4.16.4.Final/jbossjta-4.16.4.Final-sources.jar
Download http://repo1.maven.org/maven2/com/experlog/xapool/1.5.0/xapool-1.5.0-sources.jar
:hibernate-testing:eclipseJdt
:hibernate-testing:eclipseProject
:hibernate-testing:eclipse
:release:eclipseProject
:release:eclipse
BUILD SUCCESSFUL
Total time: 9 mins 13.742 secs
最终,编译成功了。
总结:
(1)编译需要使用JDK7,估计Hibernate中使用了JDK7的新特性,应该是关于try-rource的使用会比较多,接下来需要从源代码中找一下证据。
(2)需要将区域和语言修改为“英语(英国)”。
(3)编译时需要联网下载依赖项,因此网速会影响最终的编译时间。
编译完毕后导入项目到eclipse之前,先修改一下JAVA_HOME,需要和你的eclipse的版本一致,否则eclipse无法正常启动。
由于项目较多,导入的过程也会比较缓慢。需要耐心等待,如果想尝试修改hibernate源码并编译查看效果的话,导入时建议勾选copy projects into workspace,将源码拷到你指定的工作空间。
相关推荐
Hibernate Tools 是一个强大的开发工具,它为Hibernate ORM框架提供了丰富的集成开发环境支持,包括逆向工程(从数据库生成实体类)、代码生成、JPA支持以及HQL和SQL查询的调试等。要运行或修改Hibernate Tools的...
Spring框架是Java开发中不可或缺的一部分,...总的来说,这个资源为学习和研究Spring源码提供了一条捷径,通过Gradle编译和Eclipse的集成,开发者可以更便捷地进行源码级别的学习,加深对Spring的理解,提升自身技能。
【精通Java EE项目案例-基于Eclipse Spring Struts Hibernate光盘源码(第二版)】这一资源涵盖了Java企业级开发中的关键技术和实践,是学习和深入理解Java EE应用开发的宝贵资料。本资源以Eclipse作为集成开发环境,...
本压缩包提供的“编译后的spring源码”是学习和理解Spring工作原理的宝贵资源,对于Java开发者,尤其是希望深入Spring内部机制的人来说,这是一个不可多得的学习资料。 首先,导入Eclipse是开发Java项目的标准步骤...
Spring框架是Java开发中广泛应用的一个...这个编译好的Spring 4.3.0源码工程为开发者提供了一个学习和研究的平台,通过对源码的阅读,我们可以深入了解Spring的工作机制,从而更好地利用它来构建高质量的企业级应用。
JavaWeb客户管理系统是一款基于Eclipse开发的Web应用,主要利用了Spring、Struts2和Hibernate(SSH)三大框架,构建了MVC模式的项目结构。这个项目是为新手学习和二次开发设计的,使用JDK1.7版本,确保了在较旧的...
本资源"**Eclipse开发入门与项目实践 源代码**"提供了丰富的学习材料,帮助初学者快速掌握Eclipse的使用技巧并进行实际项目的开发实践。 首先,Eclipse作为一个强大的开发工具,其主要特点包括: 1. **插件扩展性*...
4,将下载的hibernate包解压到x:\rs\hib-samples\hibernate-2.1与x:\rs\hib-samples\hibernate-3,目录结构应该为: x: + rs + hib-samples 本文件包解压的目录 + forum-step1-db-first-middlegen + forum-step1...
Eclipse是一款广泛应用于Java开发的集成开发环境(IDE),它以其强大的功能、高度的可扩展...这份"从零开始学Eclipse(光盘源码)"的资料,将为我们提供丰富的实例和练习,帮助初学者快速上手,深入理解Eclipse的使用。
在提供的压缩包文件中,`.classpath`和`.project`是Eclipse项目的配置文件,它们包含了项目所需的库和构建设置。`readme.txt`可能包含了项目介绍或使用说明。`bin`目录通常包含编译后的Java类文件,而`test`和`src`...
不过,作者已经完成了下载和Gradle编译的过程,使得其他对Spring源码感兴趣的开发者可以直接导入Eclipse进行学习和分析。 Spring Framework 3.2的源码分析可以从以下几个方面入手: 1. **IoC容器**:这是Spring的...
通过深入学习和研究Spring 3.2.x的源码,开发者可以更好地掌握这个强大框架的工作机制,从而在实际项目中更高效、更灵活地应用Spring。此外,源码分析还能帮助开发者解决遇到的问题,提高代码质量,提升开发效率。
这个源码实例是一个基于Eclipse的Java Web项目,它演示了如何将这三个框架有效地整合在一起。下面我们将深入探讨SSH框架的核心概念以及它们在实际开发中的应用。 **Struts2** 是一个MVC(Model-View-Controller)...
本资源“spring-framework-源码已编译-可直接导入eclipse”是一个包含 Spring 框架源码的压缩包,经过编译后可以直接在 Eclipse IDE 中进行学习和分析。以下是对 Spring 框架源码的一些关键知识点的详细说明: 1. *...
标题提到的"spring源码(编译好了,可以直接导入eclipse)"表明这个压缩包包含的是已经编译完成的Spring框架源代码,可以直接在Eclipse集成开发环境中使用,便于学习和调试。 首先,Spring框架的核心组成部分包括...
3. 创建新项目:新建一个Java项目,并设置项目的JRE为JDK 1.8。 4. 引入Hibernate库:将适配JDK 1.8的Hibernate jar包导入到项目的类路径中,包括hibernate-core、hibernate-entitymanager等核心库。 5. 配置...
总的来说,这个“简单的博客系统源码”项目是一个很好的学习资源,它可以帮助开发者了解如何结合Struts和Hibernate实现一个简单的Web应用,同时涵盖了数据库设计、MVC架构和ORM实践等多个重要知识点。对于初学者来说...
Spring框架是Java开发中不可或缺的一部分,它以其模块化、易用性和灵活性著称。Spring 4.3.18是该框架的一个稳定版本,提供了...这个压缩包为开发者提供了一个便捷的起点,无需繁琐的编译步骤,即可直接开始学习之旅。
总之,"eclipse从入门到精通源码"的学习涵盖了Eclipse的基础使用、进阶技巧、源码分析和项目实践,通过这个资源,你可以逐步成长为一个熟练的Eclipse开发者,无论是在日常开发还是在复杂的项目环境中都能游刃有余。
《在线购物Eclipse+Struts+Hibernate》是一个关于使用Eclipse集成开发环境,结合Struts和Hibernate框架构建购物车应用的教程。这个项目旨在帮助Java开发者深入理解和实践这些技术,以便于开发出功能完备的电子商务...