4

我使用 web3j 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>
4

1 回答 1

2

我们遇到了同样的问题。我们通过手动执行 maven 插件的一些步骤来解决它:

  1. 转到此处发布的 Solidity 版本列表:https ://internal.services.web3labs.com/api/solidity/versions/ 。
  2. 将显示的 json 保存releases.json~/.web3j/solc/.
  3. 手动搜索二进制文件列表下载您需要的文件(即 win/linux/mac)。
  4. 使用版本作为名称将选定的二进制文件保存在子文件夹中。例如,如果您需要版本,请0.4.25创建相应的文件夹 ( ~/.web3j/solc/0.4.25/) 并将二进制文件放在那里。
  5. 重新运行您的 Maven 构建。

不知何故,问题是maven插件无法下载相应的文件。手动完成后,插件会找到二进制文件并跳过下载它们。

于 2021-07-21T06:23:04.343 回答