在IDEA编译器中控制台爆红NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transp是什么原因造成的怎么解决
时间: 2023-09-24 10:11:46 浏览: 593
这个问题通常是由于在系统环境变量或者启动脚本中设置了`JDK_JAVA_OPTIONS`环境变量而导致的。这个环境变量会被JDK识别并应用于JVM启动时的选项中。而这个特定的选项是为了打开JDK 9中的模块系统而设置的。
如果您不需要使用这个选项,可以尝试将`JDK_JAVA_OPTIONS`环境变量从系统环境变量或启动脚本中移除。如果您确实需要这个选项,可以尝试升级到最新的JDK版本,这个问题在一些较旧的版本中可能会出现。如果问题仍然存在,您可以尝试在启动JVM时明确地设置这个选项,而不是使用环境变量。例如,在启动命令中加入`-Djdk.javaCommandLine="your command line options"`。
需要注意的是,这个问题不会影响应用程序的运行,只是在控制台中输出一些警告信息。
相关问题
note: picked up jdk_java_options: --add-opens=java.base/java.lang=all-unnamed --add-opens=java.base/java.io=all-unnamed --add-opens=java.base/java.util=all-unnamed --add-opens=java.base/java.util.concurrent=all-unnamed --add-opens=java.rmi/sun.rmi.transport=all-unnamed
### 回答1:
这句话表示将 JDK 中的一些类的访问权限设置为允许任何类访问,具体是对 java.lang、java.io、java.util、java.util.concurrent、sun.rmi.transport 等包中的类的访问权限进行了设置。
### 回答2:
该行代码是一个 JDK 配置选项。在 Java 9 以后的版本中,使用模块化系统来管理类库。与先前的版本不同,Java 9 以后的版本中,模块化系统将类库划分为不同的模块。这意味着,如果我们需要使用一个模块中的类,我们必须先显式地向该模块声明访问权限。这种访问权限的声明是通过--add-opens选项完成的。
该行代码中的选项告诉 JVM,将指定的一组文件/包以未命名模块的方式打开,以支持反射和其他链接的操作。未命名模块是指,没有显式声明依赖其他模块,也没有被其他模块依赖的模块。
更具体地说,该选项声明了一组通配符,以打开java.base包中的一些类(如java.lang.String、java.util.List等)。这是因为许多小的生产环境部署存在对未命名模块的使用,但未命名模块无法访问Java的基本模块。因此,通过使用该选项,可以实现通过模块化系统无法使用的类的访问。同时,该选项的使用也允许旧的JDK应用程序在新的模块化系统下运行,降低了应用程序迁移和更新的难度。
总之,该行代码所表示的选项主要解决了在未命名模块和基本模块之间的访问权限问题,为允许应用程序在新的模块化系统下正确运行提供了简单和高效的解决方案。
### 回答3:
这段代码是一个用于设置Java虚拟机(JVM)参数的命令行参数,其中使用了--add-opens参数来指定Java模块的开放包,all-unnamed表示开放所有未命名的包。这些模块分别是java.base、java.lang、java.io、java.util、java.util.concurrent和java.rmi/sun.rmi.transport。在Java 9及以上版本中,Java平台的控制力更强,添加了对模块的支持,使得用户可以更细致、精确地控制Java程序运行的环境和行为。其中--add-opens参数就是其中一个新添加的参数,可以让用户开放某个封闭的Java模块中的某些包以供访问和使用。如果不设定该参数,那么在默认情况下是无法访问和使用这些被封闭的包的。这种做法可以保护某些包的内容和实现细节,防止被不当使用和攻击。但有时候用户也需要使用这些被封闭的包,那么就可以通过--add-opens参数进行开放,以满足用户特定的需求和目的。例如在某些Java应用程序中需要使用反射或动态代理等高级特性时,就需要开启这些被封闭的包。需要注意的是,这种做法可能会导致安全性问题和API不稳定性问题,所以需要谨慎使用,并且也需要及时更新和调整配置。
单元测试报错 NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi. 该怎么办
这个报错信息是在运行Java程序时,JVM通过JDK_JAVA_OPTIONS参数设置了一些限制,导致程序运行出错。解决这个问题的方法有两种:
1. 修改JDK_JAVA_OPTIONS参数:这种方法需要你有操作系统的管理员权限。你可以通过修改环境变量或者启动脚本来修改JDK_JAVA_OPTIONS参数,将其改为不含--add-opens参数的值即可。
2. 修改Java程序代码:如果你无法修改JDK_JAVA_OPTIONS参数,或者不想修改系统设置,你可以在Java程序中通过反射等方式来规避这个问题。具体做法需要根据你的程序代码和运行环境来确定,可以参考相关的Java文档或者社区讨论。
阅读全文