有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java“无法识别的选项:添加打开”Hyperledger Besu

在遵循official documentation here的步骤并运行以下命令之后,我想开始使用Hyperledger Besu:

bin\besu --help

我得到以下错误:

C:\Users\user\Desktop\besu-1.3.9>bin\besu --help
Unrecognized option: --add-opens
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

当运行bin\besubin\besu -help时,我会得到同样的结果

我不知道问题是java的安装还是hyperledger besu试图运行unvalid/unrecogned选项bin\besu --add-opens。我尝试卸载然后重新安装java,但这并没有解决问题,以下是java的版本:

C:\Users\user>java -version
Picked up _JAVA_OPTIONS: -Xmx512m
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) Client VM (build 25.241-b07, mixed mode)

任何帮助都将不胜感激


共 (3) 个答案

  1. # 1 楼答案

    我以前没有使用讨论中的库的经验,但我刚刚查看了您试图使用的库的official docs,并且安装说明中指出您需要Java 11+来编译

    Hyperledger Besu requires:

    MacOS High Sierra 10.13 or later versions

    Java 11+ to compile; earlier versions are not supported.

    从您的问题来看,您的系统似乎正在运行Java8。尝试将其升级到Java11,然后再次尝试启动二进制文件

  2. # 2 楼答案

    在环境变量中,将java主版本路径从jdk8 path更改为jdk11 像 JAVA_HOME:{jdk11目录路径}

  3. # 3 楼答案

    您正在运行的脚本将 add-opens java.base/sun.security.provider=ALL-UNNAMED添加到启动Besu的java命令行。正如其他人所指出的, add-opens参数在Java9中可用;它所做的只是防止在任何类使用反射访问内部JDK类(在本例中为Sun安全包)时发出警告。我已经启动Besu几个星期了,没有这个参数,没有任何问题,因此您可以从Besu启动脚本中删除这个参数,或者升级到至少是Besu期望的java11或更高版本。根据Oracle的说法,这个命令行参数最终将被删除,但这是Besu维护人员的问题,而不是您的问题