Java 模块和 JAR MANIFEST Class-Path 属性

问题描述

我有一个 Java 8 应用程序,我正在将其转换为 Java 11,当然,我第一次使用模块系统。

我设置了我的应用程序 Maven 程序集配置,以便所有 JAR 文件都放在 bin 发行版的 /lib 目录中。然后 maven-jar-plugin 使用所有 JAR 文件名设置 MANIFEST Class-Path 值。该应用程序使用简单的 java -jar /lib/application.jar

转向 Java 11,如果我继续以这种方式构建 bin 分布,我很想知道运行时如何解释 MANIFEST Class-Path 值?我通读了 JAR 规范 (https://docs.oracle.com/en/java/javase/11/docs/specs/jar/jar.html),我认为我理解为:

  1. 任何模块化 JAR 文件(包含 module-info.class)都将被视为非模块化 JAR。
  2. 任何非模块化 JAR 文件(无 module-info.class)都将被视为非模块化 JAR。
  3. 因为一切都在类路径上,所以一切本质上都是一个未命名的模块
  4. 由于一切都在类路径上,因此模块系统基本上不会在运行时使用
  5. 既然一切都在类路径上,那么应用程序本质上应该像运行 Java 8 一样运行?

如果我确实想改变这一点,我是否会开始将任何模块化 JAR 文件放在 --module-path 上,而将其他 JAR 文件放在 Class-Path 上?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)