网络3J |找不到源"@openzeppelin/contracts/token/ERC721/ERC721.sol":找不到文件



我正在尝试使用具有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";

相关内容

  • 没有找到相关文章

最新更新