【发布时间】:2022-02-12 18:46:39
【问题描述】:
我开始使用 web3j,我想生成智能合约包装器。根据文档,可以这样做:
web3j generate solidity -b /path/to/<smart-contract>.bin -a /path/to/<smart-contract>.abi -o /path/to/src/main/java -p com.your.organisation.name
这很好用。您需要 .bin 和 .abi 文件。 使用这个命令也很容易生成:
solcjs <contract>.sol --abi --bin
在我不导入 Openzeppelin 的合同上,这很有效。但是在我确实导入 Openzeppelin 的合同上,调用 solcjs 命令时出现错误:
ParserError: Source "@openzeppelin/contracts/token/ERC721/ERC721.sol" not found: File not found inside the base path or any of the include paths.
--> MyNFT.sol:5:1:
|
5 | import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ParserError: Source "@openzeppelin/contracts/utils/Counters.sol" not found: File not found inside the base path or any of the include paths.
--> MyNFT.sol:6:1:
|
6 | import "@openzeppelin/contracts/utils/Counters.sol";
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ParserError: Source "@openzeppelin/contracts/access/Ownable.sol" not found: File not found inside the base path or any of the include paths.
--> MyNFT.sol:7:1:
|
7 | import "@openzeppelin/contracts/access/Ownable.sol";
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
我如何在 Solidity 的智能合约中导入这个库的语法:
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
我使用 pragma solidity >=0.7.3;
智能合约有效,我用安全帽编译没有问题。
我导入了 openzeppelin 版本 - @openzeppelin/contracts@3.1.0-solc-0.7
这些文件应该放在哪里才能生成 .abi 和 .bin 文件?谢谢你的帮助。
【问题讨论】:
标签: solidity smartcontracts web3-java