如果我运行命令 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());
}
}
我可以正常创建 jar,无需添加 --release 9,但它是一个普通的 jar,它没有 versions>9 数据。
最佳答案
问题中的 jar
命令尝试创建一个基本部分中没有任何类的 MR JAR,而是尝试将所有类(包括公共(public)/API 类)放入版本化部分。如果您只是尝试创建 JAR 文件,请删除 --release
选项。如果您确实尝试创建 MR JAR,那么您应该将公共(public)/API 类放入基础部分,然后将 9 个特定类放入版本部分。 JEP 238 包含有关此帮助的所有详细信息,jar --help
输出也包含一些示例。
关于java - 无法创建 java 9 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46173594/