当前位置:   article > 正文

rocketMQ5.0启动broker报错:module java.base does not export sun.nio.ch to unnamed module_because module java.base does not export sun.nio.c

because module java.base does not export sun.nio.ch to unnamed module

最近在搭建RocketMQ5.0,然后按照官方流程:https://rocketmq.apache.org/zh/docs/quickStart/02quickstart

先启动namesrv完,再启动broker的时候遇到以下错误。

  1. java.lang.IllegalAccessError: class org.apache.rocketmq.common.UtilAll (in unnamed module @0x4bde3f8a) cannot access class sun.nio.ch.DirectBuffer (in module java.base) because module java.base does not export sun.nio.ch to unnamed module @0x4bde3f8a
  2. at org.apache.rocketmq.common.UtilAll.viewed(UtilAll.java:720)
  3. at org.apache.rocketmq.common.UtilAll.cleanBuffer(UtilAll.java:684)
  4. at org.apache.rocketmq.store.logfile.DefaultMappedFile.cleanup(DefaultMappedFile.java:470)
  5. at org.apache.rocketmq.store.ReferenceResource.release(ReferenceResource.java:63)
  6. at org.apache.rocketmq.store.ReferenceResource.shutdown(ReferenceResource.java:47)
  7. at org.apache.rocketmq.store.logfile.DefaultMappedFile.destroy(DefaultMappedFile.java:481)
  8. at org.apache.rocketmq.store.index.IndexFile.destroy(IndexFile.java:97)
  9. at org.apache.rocketmq.store.index.IndexService.load(IndexService.java:72)
  10. at org.apache.rocketmq.store.DefaultMessageStore.load(DefaultMessageStore.java:287)
  11. at org.apache.rocketmq.broker.BrokerController.initialize(BrokerController.java:754)
  12. at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:224)
  13. at org.apache.rocketmq.proxy.ProxyStartup.createBrokerController(ProxyStartup.java:212)
  14. at org.apache.rocketmq.proxy.ProxyStartup.createMessagingProcessor(ProxyStartup.java:171)
  15. at org.apache.rocketmq.proxy.ProxyStartup.main(ProxyStartup.java:79)

之前大家如果搭建过老版本的RocketMQ基本都遇到过,因为使用jdk版本高的原因,jdk1.8以上涉及到导包的问题,所以RocketMQ启动命令不兼容。

两个解决路径:

(1)使用jdk1.8 (不推荐,现在jdk都到多少版本了)

(2)修改broker启动命令,强行导包。

因为RocketMQ 5.0的bin/mqbroker启动命令指向的是runserver.sh,所以需要修改runserver.sh,在最后一行修改为以下内容。(看其他人的帖子,老版本的RocketMQ是runBroker.sh?我没安装过,大伙如果方便可以告诉我下是吗?)

文件runsever.sh

$JAVA ${JAVA_OPT} --add-exports=java.base/sun.nio.ch=ALL-UNNAMED $@

标记橙色就是新增的。修改保存后,启动broker不再报错。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/395559
推荐阅读
相关标签
  

闽ICP备14008679号