代码之家  ›  专栏  ›  技术社区  ›  MrSir

无法创建java 9 JAR

  •  2
  • MrSir  · 技术社区  · 7 年前

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

    以下是主要和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,而无需添加 --第9版 版本>9

    1 回复  |  直到 7 年前
        1
  •  4
  •   Alan Bateman    7 年前

    这个 jar 这个问题中的命令试图创建一个MR JAR,在基节中没有任何类,相反,它试图将所有类(包括公共/API类)放在一个版本化的节中。如果您只是试图创建一个JAR文件,那么请删除 --release 选项如果你真的想创建一个MR-JAR,那么你应该把public/API类放在base部分,然后把9个特定的类放在versioned部分。JEP 238拥有此帮助的所有详细信息 jar --help 输出也有一些例子。

    推荐文章
    MrSir  ·  无法创建java 9 JAR
    7 年前