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\besu
或bin\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)
任何帮助都将不胜感激
# 1 楼答案
我以前没有使用讨论中的库的经验,但我刚刚查看了您试图使用的库的official docs,并且安装说明中指出您需要Java 11+来编译
从您的问题来看,您的系统似乎正在运行Java8。尝试将其升级到Java11,然后再次尝试启动二进制文件
# 2 楼答案
在环境变量中,将java主版本路径从jdk8 path更改为jdk11 像 JAVA_HOME:{jdk11目录路径}
# 3 楼答案
您正在运行的脚本将
add-opens java.base/sun.security.provider=ALL-UNNAMED
添加到启动Besu的java命令行。正如其他人所指出的,add-opens
参数在Java9中可用;它所做的只是防止在任何类使用反射访问内部JDK类(在本例中为Sun安全包)时发出警告。我已经启动Besu几个星期了,没有这个参数,没有任何问题,因此您可以从Besu启动脚本中删除这个参数,或者升级到至少是Besu期望的java11或更高版本。根据Oracle的说法,这个命令行参数最终将被删除,但这是Besu维护人员的问题,而不是您的问题