前两个帖子只相当于是感受了一下区块链应用的编译、运行,没有真正的着手搭建二次开发环境,本次基于Ethereum的Java版客户端EthereumJ进行学习,着手搭建Gradle+Idea的开发环境。
在尝试的过程中,遇到了gradle的问题,gradle是个很好的构建公举,但实话实说,我之前没有怎么用过gradle,所以遇到了很多问题,不过让我吃惊的是,中文搜索不到任何关于EthereumJ的安装编译的帖子,英文的也很少。(哈哈~不会憨妮熊成功拿下EthereumJ中文开发教程一血了~~)。所以过程中,也有些不确定的东西,有大牛赐教的话,就更好了,大家多交流吧。
为什么选择EthereumJ,是因为憨妮熊比较熟悉Java,BitCoin是用C++开发的,Ethereum Go是用Go语言开发的,尝试看了一下源代码,基本架构能明白,但是要想做点事情,或者深入下去,语言确实有一定障碍,所以着手考虑这个Java的客户端。
path
,gradle的Home目录在Windows下是C:\Users\憨妮熊\.gradle
. %gradle Home%
下面新建一个文本gradle.properties
,里面添加如下代码后,就可以跨过systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=7070 #端口号
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=7070 #端口号
[注意]在我实践过程中,当出现请求无响应的时候,我用切换是否翻墙来解决了。可能是我记错了,也可能是我服务器线路的问题,这个经验仅供参考,GFW的淫威之下,大家且番茄珍惜吧。
https://github.com/ethereum/ethereumj
过程走通了,不过我的流程中的关键点理解还不是太深,参考的同学先严格按照我的步奏来吧,以后研究透了再更新。
cd ethereumj
gradlew run
这一步开始一定要翻墙,因为有一个spring的依赖包是没办法直接获取的。正常运行后,在黑窗口底部会有进度百分比,当百分比读到70%-80%的时候,你会看到输出的字符提示,应该是在同步区块了,同时,可以发现在ethereumj/ethereumj-core/
下面,出现新文件夹database
,并且在实时更新。这时候我选择了ctrl+c
关闭,因为区块比较大,我们的目的是学习研究代码,准备二次开发,所以先关闭。
导入到Idea
首先需要在cmd窗口里面运行gradlew build
,同样在cmd窗口底部可以看到进度百分比,当我的百分比到82%的时候,提示出了一个错误,被跳过了,但是百分比长时间不再改变,此时我ctrl+c
结束。
然后,我按照官方手册的方法,将工程导入到了Idea中。具体步奏是:IDEA: * File -> New -> Project from existing sources… * Select ethereumj/build.gradle
* Dialog “Import Project from gradle”: press “OK” * 。此时,应该能够正常导入,建立Idea工程。
[注意]如果没有用gradlew run
和gradlew build
两个命令将EthereumJ
编译成功,Idea在导入的时候是会执行build
操作的,我的经验是通常会失败。
至此,我们就可以基于EthereumJ进行二次开发了,官方有个说明https://github.com/ether-camp/ethereumj.starter
,这时候就可以编译运行org.ethereumj.Start或者任意一个org.ethereum.samples.*或者你自己写一个main。
个人感觉EthereumJ更像一个核心库,代码包名字都叫ethereumJ-core
,官方是比较支持大家新建自己的工程,讲工程依赖在ethereumJ-core
上的。
To be continued…准备从区块入手,开展下一步的工作。