当前位置: 首页 > 知识库问答 >
问题:

AdoptopenJDK的JRE11+是否与在JDK上使用jlink相同,添加了所有依赖项

凌宏大
2023-03-14

AdoptoPenJDK的JRE11+和仅仅使用jlink并添加所有依赖项是一样的吗?

共有1个答案

朱海超
2023-03-14

如果下载Uspect的JRE并运行java--list-modules,您会得到以下内容(为了更好的可读性,我删除了该版本):

java.base
java.compiler
java.datatransfer
java.desktop
java.instrument
java.logging
java.management
java.management.rmi
java.naming
java.net.http
java.prefs
java.rmi
java.scripting
java.se
java.security.jgss
java.security.sasl
java.smartcardio
java.sql
java.sql.rowset
java.transaction.xa
java.xml
java.xml.crypto
jdk.accessibility
jdk.aot
jdk.charsets
jdk.crypto.cryptoki
jdk.crypto.ec
jdk.dynalink
jdk.httpserver
jdk.internal.ed
jdk.internal.le
jdk.internal.vm.ci
jdk.internal.vm.compiler
jdk.internal.vm.compiler.management
jdk.jdwp.agent
jdk.jfr
jdk.jsobject
jdk.localedata
jdk.management
jdk.management.agent
jdk.management.jfr
jdk.naming.dns
jdk.naming.rmi
jdk.net
jdk.pack
jdk.scripting.nashorn
jdk.scripting.nashorn.shell
jdk.sctp
jdk.security.auth
jdk.security.jgss
jdk.unsupported
jdk.xml.dom
jdk.zipfs

如果下载JDK并使用jlink--add-modules java.se构建映像,则会得到以下结果:

java.base
java.compiler
java.datatransfer
java.desktop
java.instrument
java.logging
java.management
java.management.rmi
java.naming
java.net.http
java.prefs
java.rmi
java.scripting
java.se
java.security.jgss
java.security.sasl
java.sql
java.sql.rowset
java.transaction.xa
java.xml
java.xml.crypto

正如您所看到的,它不包含jdk.*模块,因为严格地说,运行时不需要这些模块。但是,如果没有jdk.localedata,就会注意到它们的缺失,例如,如果没有jdk.localedata,只有英语区域设置(甚至可能只有美国)可以工作。

java.base
java.compiler
java.datatransfer
java.desktop
java.instrument
java.logging
java.management
java.management.rmi
java.naming
java.net.http
java.prefs
java.rmi
java.scripting
java.se
java.security.jgss
java.security.sasl
java.smartcardio
java.sql
java.sql.rowset
java.transaction.xa
java.xml
java.xml.crypto
jdk.charsets
jdk.compiler
jdk.crypto.cryptoki
jdk.crypto.ec
jdk.dynalink
jdk.internal.opt
jdk.jartool
jdk.javadoc
jdk.jdeps
jdk.jfr
jdk.jlink
jdk.localedata
jdk.management
jdk.management.jfr
jdk.naming.dns
jdk.naming.rmi
jdk.scripting.nashorn
jdk.security.auth
jdk.security.jgss
jdk.unsupported.desktop
jdk.zipfs

这告诉我采用的JRE是用一个特定的模块列表构建的。如果您掌握了该模块列表,或者只是使用上面的列表构建运行时映像,您应该得到与从AdoptopenJDK下载的JRE完全相同的行为。

一些注意事项:(a)这只是我的假设,所以不要将您的项目押在这上面;(b)您可以对jlink应用大量标记来篡改结果映像,例如压缩或删除调试符号,这将影响其大小、性能(略有影响)和调试能力。

 类似资料:
  • 问题内容: 我正在上一门计算机科学课程,课程大纲说要下载Java 1.6。我找不到Java 1.6,所有内容都显示JDK6。当我用Java 1.6进行搜索时,发现此链接: http://java.sun.com/javase/downloads/index.jsp 这就是他所说的Java 1.6吗?我下载了JDK 6 update 17和netbeans 6.8。我会给教员发电子邮件并问他这个问题

  • 我正在使用JBOSS EAP 6.1和JDK 1.6。我已将所有依赖项注册为静态模块。我对JDK API有依赖性 在部署期间,我面临以下问题: java。lang.NoClassDefFoundError:javax/crypto/CipherInputStream java。lang.NoClassDefFoundError:org/omg/CORBA/portable/IDLEntity ja

  • 我有一个以.NET标准1.5为目标的项目,它作为几个DLL部署在Nuget上。该项目是从Java移植而来的。在项目的一些类中,有静态的方法,这些方法是从命令行运行的。 null 我想知道的是,有没有一种方法来编译DLL,这样它就可以在没有两个独立的(混乱的)DLL的情况下使用? 基本上,我试图获得与Java中类似的功能,在Java中,包可以被应用程序引用或在命令行上运行(并在命令行上指定入口目标)

  • 问题内容: 如何将所有从mysql_query的行添加到mysql_fetch_array()?我希望能够尽可能有效地执行此操作,因为它可以处理很多行。 问题答案: 最常见的方式: 如文档中的示例所示。

  • 我想给数组的每个元素添加相同的值。我的方法是使用default添加值。它与这个有一点不同,因为:我不知道如何写入数组的现有元素,而不是新元素。 输入: 提前感谢!