--add-opens=java.base/java.lan
时间: 2024-06-14 10:04:59 浏览: 14
`--add-opens=java.base/java.lang`是Java 9中的一个选项,用于在运行时打开指定模块的包以供其他模块访问。根据提供的引用内容,这个选项似乎被错误地传递给了Java虚拟机,导致了错误消息"Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit."。
解决这个问题的方法是确保正确使用Java选项。请检查您的命令行或脚本中是否正确传递了`--add-opens=java.base/java.lang`选项,并确保它的语法正确。如果您不需要使用这个选项,可以尝试删除它并重新运行程序。
如果您需要更多关于`--add-opens`选项的信息,可以参考Java文档中关于模块系统的章节。
相关问题
note: picked up jdk_java_options: --add-opens=java.base/java.lang=all-unnamed --add-opens=java.base
### 回答1:
/java.io=all-unnamed --add-opens=java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED
这是一条命令,用于设置 JDK 的 Java 选项。其中,--add-opens 参数用于打开指定模块的包,以便其他模块可以访问它们。这里指定了三个模块:java.base、java.io 和 java.rmi。ALL-UNNAMED 表示打开这些模块中所有未命名的包。
### 回答2:
在Java应用程序中,我们可以使用JDK来编写和运行代码。在运行JDK时,可能需要使用某些选项来控制它的行为。例如,在运行Java虚拟机时,我们可以添加一些选项来指定JVM的行为,以满足我们的需求。
在这里,我们提到的选项是“picked up jdk_java_options: --add-opens=java.base/java.lang=all-unnamed --add-opens=java.base”。这个选项的作用是打开一些Java模块的深层命名空间,确保它们的访问正确而安全。对于不熟悉Java模块化系统的读者,这可能听起来很困惑,让我们进一步解释。
JDK 9引入了Java模块化系统,它允许将代码组织成离散、可重用和可测试的单元。Java模块可以定义和隔离它们自己的API和实现细节,并将其公开给其他模块。这有助于减少Java应用程序中的依赖和耦合,从而提高了应用程序的健壮性和可维护性。
然而,Java模块化系统引入了一些新的访问控制机制,如模块路径和模块化关键字。这些机制有时会导致某些模块无法加载或访问。在这种情况下,“--add-opens”选项可以打开深层命名空间,以确保所有的模块都能够被正确加载和访问。
具体来说,“--add-opens=java.base/java.lang=all-unnamed --add-opens=java.base”选项打开了java.base模块的所有Java.lang包的未命名访问层级。这意味着包中的所有类都可以被其他模块访问,而不需要将Java.lang包的任何内容导出到外部世界。
总之,“--add-opens”选项在一些情况下是必要的,可以确保Java应用程序中的所有模块被正确加载和访问。然而,在使用此选项时,需要谨慎,并确保了解其背后的原因和实现细节。
### 回答3:
这段话涉及到了JDK的Java选项中的add-opens参数。add-opens参数是JDK 9中引入的一项新功能,用于控制Java程序在运行时能够打开哪些包以便运行。它主要用于解决在新的模块化系统中,由于禁止在模块外部访问模块内部的包,导致一些老代码无法正常运行的问题。
具体来说,add-opens参数可以通过以下方式使用:
--add-opens=module/package=othermodule(,othermodule)*
其中,module表示需要打开的模块,package表示需要打开的包,othermodule表示可以访问该模块内部包的其他模块。可以通过逗号分隔来指定多个模块或其他模块。
在这段话中,选项为--add-opens=java.base/java.lang=all-unnamed --add-opens=java.base。意思是打开java.base模块中所有未命名的java.lang包以及整个java.base模块。这样做是为了解决一些第三方库在运行时需要访问java.base模块中的一些类或方法,但在JDK 9之后由于模块化限制而无法访问。
综上,add-opens参数是JDK 9中新增的一个功能,可以用于控制Java程序在运行时打开哪些包以便运行。通过指定模块、包和其他模块的方式,可以解决一些老代码在模块化系统下无法正常运行的问题。在这段话中,指定了打开java.base模块中所有未命名的java.lang包以及整个java.base模块,以便确保第三方库能够正常运行。
Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED
这个错误通常是因为你使用了不支持 `--add-opens` 选项的 Java 版本。这个选项是在 Java 9 中引入的,如果你使用的是 Java 8 或更早版本,则不支持该选项。
如果你需要使用 `--add-opens` 选项,你需要升级到 Java 9 或更高版本。如果你已经在使用 Java 9 或更高版本,但仍然遇到这个问题,可能是因为你使用的是不完整的 JDK 版本,缺少必要的模块。你可以尝试使用完整的 JDK 版本,或者手动添加缺少的模块。
另外,如果你使用的是 Maven 项目,并且遇到了这个错误,你可以在 `pom.xml` 文件中添加以下配置来解决问题:
```
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<compilerArgs>
<arg>--add-opens</arg>
<arg>java.base/java.lang=ALL-UNNAMED</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
```
这个配置会将 `--add-opens` 选项添加到 Maven 编译器的参数中,以解决这个问题。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)