-Djava.ext.dirs=lib\x86_64;lib is not supported. Use -classpath instead. Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.
时间: 2025-07-30 16:06:28 浏览: 2
在 Java 虚拟机启动时,使用 `-Djava.ext.dirs` 参数设置扩展目录的方法在某些 Java 版本中已被弃用,特别是在 Java 9 及更高版本中模块化系统引入后,该参数不再被支持。取而代之的是推荐使用 `-classpath`(或其简写形式 `-cp`)来指定类路径。
如果遇到类似以下错误:
```
-Djava.ext.dirs=lib\x86_64;lib is not supported. Use -classpath instead.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
```
这表明当前的 Java 环境不支持 `-Djava.ext.dirs` 参数,并提示应改用 `-classpath`。以下是解决此问题的几种方法:
### 1. 使用 `-classpath` 指定类路径
将原本通过 `-Djava.ext.dirs` 设置的目录显式添加到类路径中。例如:
```bash
java -classpath "lib\x86_64;lib" com.example.Main
```
这将确保 JVM 能够正确加载所需的类和资源,而不会使用已弃用的参数。
### 2. 更新启动脚本以适配新版本 Java
如果当前使用的是脚本启动 Java 应用,并且该脚本依赖于 `-Djava.ext.dirs`,则需要更新脚本逻辑,将其替换为 `-classpath` 指令。例如,将:
```bash
JAVA_OPTS="$JAVA_OPTS -Djava.ext.dirs=lib"
```
替换为:
```bash
JAVA_OPTS="$JAVA_OPTS -classpath lib"
```
同时,确保所有依赖的 JAR 文件都位于指定的类路径目录中。
### 3. 检查 Nacos 等第三方应用的启动配置
如果问题是出现在启动 Nacos 或其他 Java 应用时,如引用中提到的错误信息:
```
-Djava.ext.dirs=/home/wenfengz/work/jdk-11/jre/lib/ext:/home/wenfengz/work/jdk-11/lib/ext is not supported. Use -classpath instead.
```
则应检查其启动脚本(如 `startup.sh` 或 `startup.cmd`),查找是否有硬编码的 `-Djava.ext.dirs` 参数,并将其替换为 `-classpath` 形式。此外,某些旧版本的 Nacos 可能对 Java 11+ 兼容性处理不佳,建议使用最新版本以获得更好的兼容性支持。
### 4. 使用 `jlink` 构建自定义运行时(适用于模块化项目)
对于模块化的 Java 应用,可以考虑使用 `jlink` 工具构建自定义运行时镜像,从而避免对扩展目录的依赖:
```bash
jlink --module-path $JAVA_HOME/jmods --add-modules java.base,java.logging --output myruntime
```
然后使用自定义运行时启动应用:
```bash
myruntime/bin/java -m com.example.Main
```
这种方法可以完全绕过类路径配置问题,适用于 Java 9 及以上版本。
---
阅读全文
相关推荐




















