java: 错误: 无效的标记: --illegal-access=permit
时间: 2024-01-07 09:04:21 浏览: 272
如果你使用的是Java 8及以下版本,那么就无法使用 `--illegal-access` 这个JVM参数,因为这个参数只适用于Java 9及以上版本。
如果你确实需要在Java 8及以下版本中使用 `--illegal-access` 参数,那么你需要升级你的Java版本。另外,你也可以尝试升级你所使用的cglib库版本,因为更高版本的cglib库可能不会导致这个警告问题。
如果你无法升级你的Java版本或cglib库版本,那么你可以尝试将这个参数设置为 `--add-opens`,如下所示:
```
java --add-opens=java.base/java.lang=ALL-UNNAMED -jar yourApplication.jar
```
这个参数将允许未命名模块打开基本包 `java.lang`,以便在反射中访问它。请注意,在使用这个参数时,你需要谨慎对待,因为它可能会导致安全漏洞。
相关问题
如何在JVM启动时配置--illegal-access=deny和--add-opens参数的作用及用法?
在JVM启动时配置`--illegal-access=deny`和`--add-opens`参数主要用于控制对Java内部API的访问权限,以提高应用程序的安全性和稳定性。
### `--illegal-access=deny`
这个参数用于全局禁止对Java内部API的非法访问。自Java 9引入模块系统以来,Java对内部API的访问进行了更严格的控制。默认情况下,Java允许通过反射等手段非法访问内部API,但这种行为可能会导致安全性和兼容性问题。通过设置`--illegal-access=deny`,可以全局禁止这种非法访问行为。
#### 用法:
```sh
java --illegal-access=deny -jar your-application.jar
```
### `--add-opens`
这个参数用于显式地开放特定的包,使其对特定的模块可见。默认情况下,Java模块系统对内部包进行了封装,其他模块无法访问这些包。通过使用`--add-opens`参数,可以将特定的包开放给其他模块,从而允许对这些包的访问。
#### 用法:
```sh
java --add-opens java.base/java.lang=ALL-UNNAMED -jar your-application.jar
```
在这个例子中,`java.base/java.lang`包被开放给所有未命名的模块(`ALL-UNNAMED`),这意味着所有模块都可以访问`java.lang`包中的内部类和方法。
### 总结
- `--illegal-access=deny`:全局禁止对Java内部API的非法访问。
- `--add-opens`:显式地开放特定的包,使其对特定的模块可见。
通过合理配置这两个参数,可以提高应用程序的安全性和稳定性,避免潜在的兼容性问题。
WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.flink.api.java.ClosureCleaner (file:/opt/flink/lib/flink-dist-1.17.0.jar) to field java.lang.Class.ANNOTATION WARNING: Please consider reporting this to the maintainers of org.apache.flink.api.java.ClosureCleaner WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release 什么意思
这是Flink程序运行时发出的警告消息,其中包含了三个警告信息:
1. "An illegal reflective access operation has occurred":发生了一个非法的反射访问操作。
2. "Illegal reflective access by org.apache.flink.api.java.ClosureCleaner":非法的反射访问由`org.apache.flink.api.java.ClosureCleaner`类触发。
3. "Please consider reporting this to the maintainers of org.apache.flink.api.java.ClosureCleaner":建议将此问题报告给`org.apache.flink.api.java.ClosureCleaner`的维护人员。
这些警告信息的含义是,Flink程序在运行时使用了Java反射机制来访问某些类的私有字段或方法,这种操作是不安全的,并且在未来的Java版本中可能会被禁止。因此,程序建议使用`--illegal-access=warn`参数来启用警告提示,并且应该避免使用反射机制来访问私有的Java API。如果问题无法解决,可以考虑将此问题报告给`org.apache.flink.api.java.ClosureCleaner`的维护人员,以便他们修复问题。
阅读全文
相关推荐














