[
https://issues.apache.org/jira/browse/PDFBOX-4400?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16718973#comment-16718973
]
Thomas Zimmermann edited comment on PDFBOX-4400 at 12/12/18 1:41 PM:
---------------------------------------------------------------------
I'm also using the [moditect-maven-plugin|https://github.com/moditect/moditect]
to generate module descriptors for pdfbox, fontbox, xmpbox and JAXB
(javax.activation-api lacks a module descriptor). I'll append my configuration,
maybe you are doing something different, [~yboompook].
To verify the fix worked, I did:
{noformat}
git clone https://github.com/apache/pdfbox.git{noformat}
then inside the pdfbox directory
{noformat}
mvn clean install{noformat}
and then changed my project to depend on pdfbox version 3.0.0-SNAPSHOT.
Here is the relevant part of the configuration for the moditect-maven-plugin
(this is for the 3.0.0-SNAPSHOT version of pdfbox, fontbox added a package
recently, so that also needs to be exported):
{code:java}
<module>
<artifact>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
</artifact>
<moduleInfoSource>
module pdfbox {
requires static org.bouncycastle.pkix;
requires static org.bouncycastle.provider;
requires transitive java.desktop;
requires transitive java.xml;
requires transitive fontbox;
requires transitive org.apache.commons.logging;
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;
}
</moduleInfoSource>
</module>
<module>
<artifact>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
</artifact>
<moduleInfoSource>
module fontbox {
requires org.apache.commons.logging;
requires transitive java.desktop;
exports org.apache.fontbox;
exports org.apache.fontbox.afm;
exports org.apache.fontbox.cff;
exports org.apache.fontbox.cmap;
exports org.apache.fontbox.encoding;
exports org.apache.fontbox.pfb;
exports org.apache.fontbox.ttf;
exports org.apache.fontbox.ttf.gsub;
exports org.apache.fontbox.ttf.model;
exports org.apache.fontbox.ttf.table.common;
exports org.apache.fontbox.ttf.table.gsub;
exports org.apache.fontbox.type1;
exports org.apache.fontbox.util;
exports org.apache.fontbox.util.autodetect;
}
</moduleInfoSource>
</module>
<module>
<artifact>
<groupId>org.apache.pdfbox</groupId>
<artifactId>xmpbox</artifactId>
</artifact>
<moduleInfoSource>
module xmpbox {
requires java.xml.bind;
requires transitive java.xml;
exports org.apache.xmpbox;
exports org.apache.xmpbox.schema;
exports org.apache.xmpbox.type;
exports org.apache.xmpbox.xml;
}
</moduleInfoSource>
</module>
<!--
javax:activation:javax.activation-api:1.2.0 is
using removed JDK classes, but it still works somehow:
https://github.com/eclipse-ee4j/jaxb-ri/issues/1236
Remove this when JAXB is using a version that has a
proper module-info.java.
-->
<module>
<artifact>
<groupId>javax.activation</groupId>
<artifactId>javax.activation-api</artifactId>
</artifact>
<moduleInfoSource>
module java.activation {
requires java.logging;
requires transitive java.datatransfer;
requires transitive java.desktop;
exports javax.activation;
}
</moduleInfoSource>
</module>
{code}
Edit: I know the module names are bad (should be org.apache.pdfbox,
org.apache.fontbox etc.) but they need to work as automatic modules inside my
IDE as well for now.
was (Author: zimmi):
I'm also using the [moditect-maven-plugin|https://github.com/moditect/moditect]
to generate module descriptors for pdfbox, fontbox, xmpbox and JAXB
(javax.activation-api lacks a module descriptor). I'll append my configuration,
maybe you are doing something different, [~yboompook].
To verify the fix worked, I did:
{noformat}
git clone https://github.com/apache/pdfbox.git{noformat}
then inside the pdfbox directory
{noformat}
mvn clean install{noformat}
and then changed my project to depend on pdfbox version 3.0.0-SNAPSHOT.
Here is the relevant part of the configuration for the moditect-maven-plugin
(this is for the 3.0.0-SNAPSHOT version of pdfbox, fontbox added a package
recently, so that also needs to be exported):
{code:java}
<module>
<artifact>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
</artifact>
<moduleInfoSource>
module pdfbox {
requires static org.bouncycastle.pkix;
requires static org.bouncycastle.provider;
requires transitive java.desktop;
requires transitive java.xml;
requires transitive fontbox;
requires transitive org.apache.commons.logging;
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;
}
</moduleInfoSource>
</module>
<module>
<artifact>
<groupId>org.apache.pdfbox</groupId>
<artifactId>fontbox</artifactId>
</artifact>
<moduleInfoSource>
module fontbox {
requires org.apache.commons.logging;
requires transitive java.desktop;
exports org.apache.fontbox;
exports org.apache.fontbox.afm;
exports org.apache.fontbox.cff;
exports org.apache.fontbox.cmap;
exports org.apache.fontbox.encoding;
exports org.apache.fontbox.pfb;
exports org.apache.fontbox.ttf;
exports org.apache.fontbox.ttf.gsub;
exports org.apache.fontbox.ttf.model;
exports org.apache.fontbox.ttf.table.common;
exports org.apache.fontbox.ttf.table.gsub;
exports org.apache.fontbox.type1;
exports org.apache.fontbox.util;
exports org.apache.fontbox.util.autodetect;
}
</moduleInfoSource>
</module>
<module>
<artifact>
<groupId>org.apache.pdfbox</groupId>
<artifactId>xmpbox</artifactId>
</artifact>
<moduleInfoSource>
module xmpbox {
requires java.xml.bind;
requires transitive java.xml;
exports org.apache.xmpbox;
exports org.apache.xmpbox.schema;
exports org.apache.xmpbox.type;
exports org.apache.xmpbox.xml;
}
</moduleInfoSource>
</module>
<!--
javax:activation:javax.activation-api:1.2.0 is
using removed JDK classes, but it still works somehow:
https://github.com/eclipse-ee4j/jaxb-ri/issues/1236
Remove this when JAXB is using a version that has a
proper module-info.java.
-->
<module>
<artifact>
<groupId>javax.activation</groupId>
<artifactId>javax.activation-api</artifactId>
</artifact>
<moduleInfoSource>
module java.activation {
requires java.logging;
requires transitive java.datatransfer;
requires transitive java.desktop;
exports javax.activation;
}
</moduleInfoSource>
</module>
{code}
> jlink loading police.afm files
> ------------------------------
>
> Key: PDFBOX-4400
> URL: https://issues.apache.org/jira/browse/PDFBOX-4400
> Project: PDFBox
> Issue Type: Bug
> Components: PDModel
> Affects Versions: 2.0.13
> Environment: java11 jlink windows moditect
> Reporter: kevin guerin
> Assignee: Tilman Hausherr
> Priority: Major
> Labels: jdk9
> Fix For: 2.0.14, 3.0.0 PDFBox
>
>
> hello everybody,
>
> I've got a problem with this trace on jlink on java11 (it works without jlink)
>
> {code:java}
> // Exception in thread "JavaFX Application Thread"
> java.lang.ExceptionInInitializerError
> at
> [email protected]/org.apache.pdfbox.pdmodel.font.PDFont.<init>(PDFont.java:112)
> at
> [email protected]/org.apache.pdfbox.pdmodel.font.PDType0Font.<init>(PDType0Font.java:176)
> at
> [email protected]/org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:83)
> at
> [email protected]/org.apache.pdfbox.pdmodel.PDResources.getFont(PDResources.java:146)
> at
> [email protected]/org.apache.pdfbox.contentstream.operator.text.SetFontAndSize.process(SetFontAndSize.java:60)
> at
> [email protected]/org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:848)
> at
> [email protected]/org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:503)
> at
> [email protected]/org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:477)
> at
> [email protected]/org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:150)
> at
> [email protected]/org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:254)
> at
> [email protected]/org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:245)
> at
> [email protected]/org.apache.pdfbox.rendering.PDFRenderer.renderImageWithDPI(PDFRenderer.java:179)
>
> Caused by: java.lang.RuntimeException: java.io.IOException:
> org/apache/pdfbox/resources/afm/Courier-Bold.afm not found
> at
> [email protected]/org.apache.pdfbox.pdmodel.font.Standard14Fonts.<clinit>(Standard14Fonts.java:97)
> ... 36 more
> Caused by: java.io.IOException:
> org/apache/pdfbox/resources/afm/Courier-Bold.afm not found
> at
> [email protected]/org.apache.pdfbox.pdmodel.font.Standard14Fonts.addAFM(Standard14Fonts.java:134)
> at
> [email protected]/org.apache.pdfbox.pdmodel.font.Standard14Fonts.addAFM(Standard14Fonts.java:103)
> at
> [email protected]/org.apache.pdfbox.pdmodel.font.Standard14Fonts.<clinit>(Standard14Fonts.java:50)
> ... 36 more
> {code}
>
> I think the problem comes from the fact that while using jlink the classpath
> does not exist and it need to be loaded by an another way that the classpath
> one.
>
> the path should look like something like :
> {code:java}
> // Path path =
> Paths.get(URI.create("jrt:/pdfbox/org/apache/resources/afm/police.afm"));
> {code}
> modules here is managed by moditect (maven plugin to help creating
> module-info descriptor) and contain all dependancies of the project
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]