无法创建 java 9 个罐子

Unable to create java 9 jars

如果我运行命令jar --create --release 9 -C com.java.mrjar.nine\build\classes .我有错误

entry: META-INF/versions/9/com/java/mrjar/nine/Main.class, contains a new public class not found in base entries
entry: META-INF/versions/9/com/java/mrjar/nine/TimeUt.class, contains a new public class not found in base entries
invalid multi-release jar file mrjars\com.java.mrjar.jar deleted

这些是 Main 和 TimeUt 类:

package com.java.mrjar.nine;
import java.time.Instant;
public class Main {
    public static void main(String[] args) {
        System.out.println("Inside jdk9 Main.main()...");
        TimeUt t = new TimeUt();
        System.out.println("Local Date: "+t.getLocalDate(Instant.now()));
    }
}

package com.java.mrjar.nine;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
public class TimeUt {
    public TimeUt() {
        System.out.println("creating jdk9 version of TimeUt");
    }
    public LocalDate getLocalDate(Instant now){
        return LocalDate.ofInstant(now, ZoneId.systemDefault());
    }
}

我可以在不添加 --release 9 的情况下正常创建 jar,但它是一个普通的 jar,它没有 versions>9 数据.

问题中的 jar 命令试图在基础部分创建一个没有任何 类 的 MR JAR,而是试图将所有 类(包括public/API 类) 在版本控制部分中。如果您只是想创建一个 JAR 文件,请删除 --release 选项。如果您真的想创建一个 MR JAR,那么您应该将 public/API 类 放在基本部分,然后将特定于 9 的 类 放在版本部分。 JEP 238 包含有关此帮助的所有详细信息,jar --help 输出也有一些示例。