返回

一键解决Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes ...

后端

修复 Java HotSpot 警告:共享仅受引导加载器类支持

在使用 Java HotSpot(TM) 64-Bit Server VM 时,你可能会遇到一条令人讨厌的警告:

Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes

这条警告会让你抓耳挠腮,因为它指出一个潜在的问题,但却没有提供明确的解决方案。别担心,本文将为你深入分析此警告的根源并提供一步步的解决方案,让你可以轻松告别它。

问题根源:类加载器

要理解这个警告,我们需要了解 Java 虚拟机 (JVM) 中的类加载器。类加载器负责加载类文件,就像装载码的卡车一样。JVM 在启动时创建了三个类加载器:

  • 引导加载器: 加载核心类库,如 java.lang.*
  • 扩展加载器: 加载 Java 扩展库。
  • 应用程序加载器: 加载应用程序的类。

当 IDEA 启动时,它会对类加载方式进行一些调整,将一些核心类库路径添加到引导加载器的搜索路径中。但问题在于,Redis 客户端库通常不在引导加载器的搜索路径中。因此,在加载 Redis 客户端库时,就会出现这个共享仅受引导加载器类支持的警告。

解决方案:添加 Redis 库到引导加载器

要解决此问题,我们需要将 Redis 客户端库添加到引导加载器的搜索路径中。以下是具体步骤:

  1. 打开 IDEA,点击“文件”菜单,选择“项目结构”。
  2. 在“项目结构”对话框中,选择“模块”。
  3. 选择你的应用程序模块,然后点击“依赖项”选项卡。
  4. 点击“+”按钮,选择“JAR 或目录”。
  5. 选择 Redis 客户端库的 JAR 文件,然后点击“确定”。

现在,Redis 客户端库已添加到引导加载器的搜索路径中。重新启动 IDEA,讨厌的警告就消失了。

代码示例

下面是一个代码示例,演示了如何在你的应用程序中加载 Redis 客户端库:

import redis.clients.jedis.Jedis;

public class RedisExample {

    public static void main(String[] args) {
        // 创建 Redis 客户端
        Jedis jedis = new Jedis("localhost", 6379);

        // 设置键值对
        jedis.set("key", "value");

        // 获取值
        String value = jedis.get("key");

        // 关闭连接
        jedis.close();
    }
}

常见问题解答

1. 为什么一定要将 Redis 库添加到引导加载器?

将 Redis 库添加到引导加载器可确保在 JVM 启动时始终加载它。这对于需要在应用程序启动时立即访问 Redis 的情况非常重要。

2. 为什么不将 Redis 库添加到扩展加载器?

扩展加载器仅加载 Java 扩展库。Redis 客户端库不是 Java 扩展库,因此将其添加到扩展加载器不会解决问题。

3. 我正在使用不同的 IDE,解决方案是否相同?

是的,解决方案与 IDE 无关。它是针对 Java 类加载器本身的。

4. 警告消失了,但我仍然无法访问 Redis。

确保你已正确配置 Redis 连接设置,例如主机、端口和凭据。

5. 我遇到了其他 Java HotSpot 警告,怎么办?

Java HotSpot 警告多种多样。尝试在网上搜索特定警告信息,了解其根源和解决方案。