java - 无法创建 java 9 jar

标签 java jar java-9 multi-release-jar

如果我运行命令 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/

相关文章:

java - 使用测试代码修补 Java 9 模块以处理反射

java - pdf 文件无法从 ubuntu 16.04 的 jar 中打开

java - 如何从 Java 9 中的另一个模块添加到 JavaFX Scene 样式表?

java - 如何使用 JAXB 编码(marshal)/取消编码(marshal)链接的 Java 对象

java - pax-jdbc PostgreSQL JBoss fuse

java - 尝试使用 phpass 检查 wordpress 密码哈希

java - 读取 Excel 文档时出现问题(Java 代码)

java - 如何在netbeans中创建jar文件

java - 线程 "main"org.owasp.esapi.errors.ConfigurationException : 中出现异常

java - 在 jdk 9 中打包为 jar 时出现没有 module-info.class 错误的 --module-version 或 --hash-dependencies 之一