背景:
- sol文件已经被编译成了.abi 和 .bin文件
- 已经安装了web3j的命令
否则,请查看前2篇文章。
一、根据abi文件和bin文件生成java合约类
语法:
web3j solidity generate -b <编译的bin文件地址> -a <编译的abi文件地址>
-o <输出目录> -p <java包名>
例子:例:
web3j solidity generate
-b D:side-meuniverseuniversesoliditysrcmainresourcesHeroNFT.bin
-a D:side-meuniverseuniversesoliditysrcmainresourcesHeroNFT.abi
-o D:side-meuniverseuniversesoliditysrcmain
-p com.god.contract
注意:-o 是文件根目录,-p的包名会自动创建文档结构。
二、检查结果
三、心路历程
接到任务要java调用合约铸造NFT,合约是什么鬼?java如何调用?通过什么协议调用?
一头雾水,咋办呢?
抉择:
1)、通过java直接继承Contract类(前提引入pom依赖),根据与合约的约定,自定义合约类。无奈是新手,不知道BINARY是啥,也不知道如何重写类。遂放弃。
2)、通过系统自动生成java合约类的方式。合约,.abi和.bin和web3j命令转换。
曲折的道路就此展开:
首先、确定啥是合约,做合约的哥们发给了合约的截图,原来就是一个定义,用.sol后缀命名的文件。
好办,咱们是java出身,idea有没有什么好的办法呢,google一直在帮大忙。
安装solidity插件,配置solc环境变量,一气呵成,编译成了.abi和.bin文件
其次、安装web3j命令
最后:生成java合约类。
接下来就是合约的部署和调用了, がんばれ!
补充 :关注java pom的版本号
<dependency>
<groupId>org.web3j</groupId>
<artifactId>core</artifactId>
<version>5.0.0</version>
</dependency>