我使用web 3 j maven插件来自动生成智能合约Java代理。
但我有一个问题,那就是找不到solidity编译器版本。
[INFO]
[INFO] --- web3j-maven-plugin:4.8.2:generate-sources (default) @ web3j-client-lib ---
[INFO] Solidity: adding to process 'DZPayments.sol'
[INFO] Solidity: adding to process 'Migrations.sol'
[INFO] Solidity: adding to process 'Proxy.sol'
[INFO] Solidity: adding to process 'Storage.sol'
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.928 s
[INFO] Finished at: 2021-06-18T10:50:37+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to get solidity version from server
有人有主意吗?
我只使用默认配置,并已将SOL文件复制到src/main/resources
这是我的插件配置(最简单的!):
<plugin>
<groupId>org.web3j</groupId>
<artifactId>web3j-maven-plugin</artifactId>
<version>4.8.2</version>
<configuration>
<soliditySourceFiles/>
</configuration>
</plugin>
我在4.8.4版本中使用了以下两个依赖项,但我在5.0.0版本中也测试了它,结果相同:
<dependency>
<groupId>org.web3j</groupId>
<artifactId>abi</artifactId>
<version>4.8.4</version>
</dependency>
<dependency>
<groupId>org.web3j</groupId>
<artifactId>core</artifactId>
<version>4.8.4</version>
</dependency>
1条答案
按热度按时间uajslkp61#
我们遇到了同样的问题。我们通过手动执行maven插件的一些步骤来解决它:
1.转到这里发布的solidity版本列表:https://internal.services.web3labs.com/api/solidity/versions/。
1.将显示的json保存为
~/.web3j/solc/
中的releases.json
。1.手动搜索二进制文件列表,下载你需要的二进制文件(即win/linux/mac)。
1.将所选的二进制文件保存在一个子文件夹中,并使用版本作为其名称。例如,如果您需要版本
0.4.25
,请创建一个相应的文件夹(~/.web3j/solc/0.4.25/
)并将二进制文件放在那里。1.重新运行您的maven构建。
不知何故,问题是maven插件无法下载相应的文件。手动完成后,插件会找到二进制文件并跳过下载它们。