微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试注入module-info.java时找不到模块

如何解决尝试注入module-info.java时找不到模块

我有一个使用Apache PDFBox的JavaFX项目。我想使用JLink为其构建JRE,但由于PDFBox自动模块,所以无法使用。因此,我正在尝试在其中注入一个模块信息文件

我使用jdeps生成了这个模块信息文件

module org.apache.pdfBox {
    requires org.bouncycastle.pkix;
    requires org.bouncycastle.provider;

    requires transitive commons.logging;
    requires transitive java.desktop;
    requires transitive java.xml;
    requires transitive org.apache.fontBox;

    exports org.apache.pdfBox.contentstream;
    exports org.apache.pdfBox.contentstream.operator;
    exports org.apache.pdfBox.contentstream.operator.color;
    exports org.apache.pdfBox.contentstream.operator.graphics;
    exports org.apache.pdfBox.contentstream.operator.markedcontent;
    exports org.apache.pdfBox.contentstream.operator.state;
    exports org.apache.pdfBox.contentstream.operator.text;
    exports org.apache.pdfBox.cos;
    exports org.apache.pdfBox.filter;
    exports org.apache.pdfBox.io;
    exports org.apache.pdfBox.multipdf;
    exports org.apache.pdfBox.pdfparser;
    exports org.apache.pdfBox.pdfwriter;
    exports org.apache.pdfBox.pdmodel;
    exports org.apache.pdfBox.pdmodel.common;
    exports org.apache.pdfBox.pdmodel.common.filespecification;
    exports org.apache.pdfBox.pdmodel.common.function;
    exports org.apache.pdfBox.pdmodel.common.function.type4;
    exports org.apache.pdfBox.pdmodel.documentinterchange.logicalstructure;
    exports org.apache.pdfBox.pdmodel.documentinterchange.markedcontent;
    exports org.apache.pdfBox.pdmodel.documentinterchange.prepress;
    exports org.apache.pdfBox.pdmodel.documentinterchange.taggedpdf;
    exports org.apache.pdfBox.pdmodel.encryption;
    exports org.apache.pdfBox.pdmodel.fdf;
    exports org.apache.pdfBox.pdmodel.font;
    exports org.apache.pdfBox.pdmodel.font.encoding;
    exports org.apache.pdfBox.pdmodel.graphics;
    exports org.apache.pdfBox.pdmodel.graphics.blend;
    exports org.apache.pdfBox.pdmodel.graphics.color;
    exports org.apache.pdfBox.pdmodel.graphics.form;
    exports org.apache.pdfBox.pdmodel.graphics.image;
    exports org.apache.pdfBox.pdmodel.graphics.optionalcontent;
    exports org.apache.pdfBox.pdmodel.graphics.pattern;
    exports org.apache.pdfBox.pdmodel.graphics.shading;
    exports org.apache.pdfBox.pdmodel.graphics.state;
    exports org.apache.pdfBox.pdmodel.interactive.action;
    exports org.apache.pdfBox.pdmodel.interactive.annotation;
    exports org.apache.pdfBox.pdmodel.interactive.annotation.handlers;
    exports org.apache.pdfBox.pdmodel.interactive.annotation.layout;
    exports org.apache.pdfBox.pdmodel.interactive.digitalsignature;
    exports org.apache.pdfBox.pdmodel.interactive.digitalsignature.visible;
    exports org.apache.pdfBox.pdmodel.interactive.documentnavigation.destination;
    exports org.apache.pdfBox.pdmodel.interactive.documentnavigation.outline;
    exports org.apache.pdfBox.pdmodel.interactive.form;
    exports org.apache.pdfBox.pdmodel.interactive.measurement;
    exports org.apache.pdfBox.pdmodel.interactive.pagenavigation;
    exports org.apache.pdfBox.pdmodel.interactive.viewerpreferences;
    exports org.apache.pdfBox.printing;
    exports org.apache.pdfBox.rendering;
    exports org.apache.pdfBox.text;
    exports org.apache.pdfBox.util;
    exports org.apache.pdfBox.util.filetypedetector;
}

在罐子的文件夹中,我运行了: javac --patch-module org.apache.pdfBox=pdfBox-2.0.20.jar module-info.java

但是后来我得到了

pdfBox/module-info.java:2: error: module not found: org.bouncycastle.pkix
    requires org.bouncycastle.pkix;
                             ^
pdfBox/module-info.java:3: error: module not found: org.bouncycastle.provider
    requires org.bouncycastle.provider;
                             ^
pdfBox/module-info.java:5: error: module not found: commons.logging
    requires transitive commons.logging;
                               ^
pdfBox/module-info.java:8: error: module not found: org.apache.fontBox
    requires transitive org.apache.fontBox;
                                  ^
4 errors

我该如何解决?有更好的解决方法吗?预先感谢。

项目:https://github.com/ajsaraujo/mre-automodule

解决方法

由于自动模块问题,您不能直接使用jlink。但是您可以遵循本教程https://github.com/dlemmermann/JPackageScriptFX,该教程也使用jlink,但仅用于创建专用的运行时而无需模块化您的项目。我也在项目中使用PDFBox,所以我知道它可以工作。免责声明:我有偏见,因为我是上述教程的合著者:-)

,

我找到了有关逐步制作 module-info.class 的教程。 为 org.apache.commons.math3 创建 module-info.class 对我很有用。 https://www.youtube.com/watch?v=bO6f3U4i0A0&t=293

对我来说,“找不到模块”问题没有出现。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。