关于ja-netfilter适配Java17的问题

这两天总有人私信或评论跟我说:大事不好了,ja-netfilterJava17里用不起了!

这事听着就新鲜!我心想早在5月20日的提交中,我就兼容了Java17并且写在README里了。
所以,这个事情我本没当回事,直到问的人越来越多。细问之下,原来是JB家所有IDE2022.2版本默认启用Java17
故有写此短文专门来解释一下。

首先,请看项目的README.md,自认为写的是非常清楚了:

  • for Java 17 you have to add at least these JVM Options:
    --add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED
    --add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED
    

简单来说就是要在Java17中使用ja-netfilter,你需要:

  1. 你需用5月20日发布的ja-netfilter-v2022.2.0版本,否则可能无法启动。
  2. 你需添加这两条JVM参数,否则ja-netfilter无法访问Java17内置的ASM包。

JVM参数是加在启动命令里,还是加在JVM参数文件里,都可以。
至于为什么Java17要加这个配置,这是JVM规定的。你不加,项目用到的某些类就访问不到。具体你可以看这里

最后,使用一个工具,请养成先通读README的习惯!

分享本文到:

17 评论

留下评论

您的电子邮箱地址不会被公开。

  1. 如果用jdk11以上编译的话是不是pom.xml里加上

    –add-exports
    java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED
    –add-exports
    java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED

    也行啊

  2. 前几天升级 2022.2 发现不行,回退之后就没管它, 要不是今天上来看看你的微博,我还没想到还有这个问题