我正在尝试使用具有Web3J依赖性的Java Spring Boot创建一个简单的NFT。当我尝试使用Solc编译器生成.abi
文件和.bin
文件时,我收到了以下错误:
Source "@openzeppelin/contracts/token/ERC721/ERC721.sol" not found: File not found. Searched the following locations: "".
--> src/main/resources/solidity/nfts/SimpleCollectible.sol:7:1:
|
7 | import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
此错误的消息很清楚,我无法导入外部文件。如何在不将所需文件复制到我的项目中的情况下修复此问题?
我是这个主题的新手,我想将智能合约与Java集成。
我也面临着同样的错误,我找到了一个解决方案,但它也有一些问题。编译后,给出两个合同的abi和bin文件。
您可以尝试在命令中添加openzeppelin
文件路径。
在这里找到解决方案
solcjs ./node_modules/@openzeppelin/contracts/utils/math/SafeMath.sol
./src/main/resources/solidity/AddressBook.sol --bin --abi --optimize -o
./src/main/resources/out
--第一个路径是openzeppelin
契约路径,第二个路径是源文件路径。
通常情况下,您的ide可能在vscodePackage Default Dependencies Contracts Directory
中有一个类似的选项。如果配置成功,import语句应自动进入node_modules
并查找@openzeppeling
依赖项。如果没有,你必须通过相对路径在坚实的代码:
import "../node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol";