gpt4 book ai didi

java - 什么被认为是 Java 核心模块?

转载 作者:行者123 更新时间:2023-12-05 04:26:50 25 4
gpt4 key购买 nike

我正在通读 JDK9 release notes并发现信息不足。

其中一段,写着:

The classes in many non-core modules are now defined to the platform class loader rather than the boot class loader. This may impact code that creates class loaders with null as the parent class loader and assumes that all platform classes are visible to the parent class loader.

基于这一段,我试图找出 Java 中什么是核心模块和非核心模块,但找不到任何答案。

我还尝试运行一个简单的程序来检查来自不同模块的类的类加载器,但到目前为止有时它返回 null (这意味着 boot 类加载器)有时它返回 PlatformClassLoader

我不想手动检查所有模块。是否有一些被认为是核心和非核心的模块列表?

谢谢。

最佳答案

手动检查所有模块很容易,使用 ModuleLayer.boot().modules()
为了完整起见,您还应该在命令行上添加 --add-modules=ALL-MODULE-PATH VM 选项:

public class ModuleCL {
public static void main(String[] args) {
Map<ClassLoader, Set<Module>> moduleMap = new HashMap<>();
for (var m : ModuleLayer.boot().modules()) {
ClassLoader cl = m.getClassLoader();
Set<Module> modules = moduleMap.computeIfAbsent(cl, __ -> new HashSet<>());
modules.add(m);
}
for (var e : moduleMap.entrySet()) {
System.out.println(e.getKey());
for (var m : e.getValue()) {
System.out.println(" " + m);
}
}
}
}

使用 Java 18 在(我的机器)上输出:

null    module java.rmi    module java.xml    module java.datatransfer    module jdk.nio.mapmode    module jdk.jfr    module jdk.naming.rmi    module java.naming    module java.management.rmi    module jdk.net    module jdk.management.jfr    module java.management    module java.logging    module jdk.sctp    module java.security.sasl    module jdk.management.agent    module java.instrument    module jdk.unsupported    module java.base    module java.desktop    module java.prefs    module jdk.managementjdk.internal.loader.ClassLoaders$PlatformClassLoader@2f2c9b19    module java.net.http    module java.transaction.xa    module jdk.dynalink    module java.scripting    module jdk.crypto.mscapi    module jdk.crypto.ec    module jdk.localedata    module jdk.security.jgss    module jdk.jsobject    module java.security.jgss    module java.sql.rowset    module jdk.accessibility    module jdk.zipfs    module java.xml.crypto    module java.sql    module jdk.naming.dns    module jdk.charsets    module java.smartcardio    module java.compiler    module jdk.security.auth    module jdk.xml.dom    module jdk.httpserver    module jdk.crypto.cryptokijdk.internal.loader.ClassLoaders$AppClassLoader@1d44bcfa    module jdk.attach    module jdk.internal.le    module jdk.jpackage    module jdk.internal.opt    module jdk.jdeps    module jdk.compiler    module jdk.jartool    module jdk.javadoc    module jdk.internal.ed    module jdk.jlink    module jdk.internal.jvmstat    module jdk.editpad    module jdk.random    module jdk.jdwp.agent    module jdk.jshell    module jdk.unsupported.desktop    module jdk.jconsole    module jdk.jstatd    module jdk.jdi

This file defines the mapping of the different modules to the different loaders

关于java - 什么被认为是 Java 核心模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72927583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com