有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JDK 9 jlink出现错误:必须指定输出

我是JDK 9新手,尝试使用jlink为一个简单的应用程序生成运行时

我有以下模块描述符

module reader{

        // no "requires" entries implies no dependency on other modules

        // other modules can access org.reader package
        // all other packages are implicitly unavailable

        exports org.reader;
    }

module decoder {

    // depends on reader module
    requires reader;

    // exposes com.decoder package to modules which require decoder module
    // all other packages in decoder module are implicitly unavailable to other modules
    exports com.decoder;
}

我定义了几个名为Reader的简单类。java和解码器。java,我可以使用以下步骤编译和运行它们

(1)下载JDK和JRE 9.0.4并将其解压缩到测试目录

(2)在测试目录中创建以下目录结构

/moduleExamples/readerDecoderExample/src/main/java
/moduleExamples/readerDecoderExample/src/main/java/reader
/moduleExamples/readerDecoderExample/src/main/java/decoder

(3)添加读卡器模块信息。java,org/reader/reader。java到读卡器目录。添加解码器模块信息。java,com/解码器/解码器。java到解码器目录

(4)导航到test/moduleExamples/readerDecoderExample目录,运行以下命令

导出JAVA_HOME=test/jdk9。0.4 mkdir mods 导出模块_PATH=test/moduleExamples/readerDecoreExample/mods

(5)编译阅读器和解码器模块

${JAVA_HOME}/bin/javac -d mods --module-source-path src/main/java/ $(find src/main/java -name "*.java")

(6)运行Decoder类

${JAVA_HOME}/bin/java --module-path mods -m decoder/com.decoder.Decoder input.txt

(7)mkdir mlibs

(8)使用以下命令将模块打包到JAR中

    ${JAVA_HOME}/bin/jar --create --file mlibs/reader@1.0.jar --module-version=1.0 -C mods/reader .

${JAVA_HOME}/bin/jar --create --file mlibs/decoder.jar --main-class=com.decoder.Decoder -C mods/decoder .

(9)在步骤(8)的末尾,我有一个mlibs dir,如下所示

readerDecoderExample/mlibs/decoder.jar
readerDecoderExample/mlibs/reader@1.0.jar

(10)当我尝试使用以下命令构建JRE时

${JAVA_HOME}/bin/jlink --module-path ${JAVA_HOME}/jmods;mlibs/reader@1.0.jar --add-modules reader@1.0 --output out

我得到以下错误

错误:--必须指定输出

谁能告诉我我做错了什么吗

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    我在工作中做演示时,在gitbash上遇到了同样的问题。我以前在mac电脑上试用过,而且${JAVA_HOME}/jmods;mlibs/reader@1.0.jar运行良好,只是在移动到PC时将:更改为;

    错误似乎出现在jmods上,所以我只是删除了它,它工作得很好——不知道如何或为什么,这种方法在mac上不起作用

    以下方面应起作用:

    ${JAVA_HOME}/bin/jlink  module-path mlibs/reader@1.0.jar  add-modules reader@1.0  output out