[
https://issues.apache.org/jira/browse/CONFIGURATION-839?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17827104#comment-17827104
]
Gary D. Gregory edited comment on CONFIGURATION-839 at 3/14/24 2:32 PM:
------------------------------------------------------------------------
Hi [~bob.marinier]
The Servlet API is defined as "provided" in Maven:
{code:xml}
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
{code}
The generated module-info file looks like this:
{code:java}
module org.apache.commons.configuration2 {
requires static com.fasterxml.jackson.databind;
requires static commons.jexl;
requires static org.apache.commons.codec;
requires org.apache.commons.lang3;
requires org.apache.commons.logging;
requires org.apache.commons.text;
requires static commons.beanutils;
requires static commons.jxpath;
requires static commons.vfs2;
requires java.desktop;
requires java.naming;
requires java.sql;
requires java.xml;
requires static org.yaml.snakeyaml;
requires servlet.api;
requires static spring.beans;
requires static spring.core;
requires static xml.resolver;
exports org.apache.commons.configuration2;
exports org.apache.commons.configuration2.beanutils;
exports org.apache.commons.configuration2.builder;
exports org.apache.commons.configuration2.builder.combined;
exports org.apache.commons.configuration2.builder.fluent;
exports org.apache.commons.configuration2.convert;
exports org.apache.commons.configuration2.event;
exports org.apache.commons.configuration2.ex;
exports org.apache.commons.configuration2.interpol;
exports org.apache.commons.configuration2.io;
exports org.apache.commons.configuration2.plist;
exports org.apache.commons.configuration2.reloading;
exports org.apache.commons.configuration2.resolver;
exports org.apache.commons.configuration2.spring;
exports org.apache.commons.configuration2.sync;
exports org.apache.commons.configuration2.tree;
exports org.apache.commons.configuration2.tree.xpath;
exports org.apache.commons.configuration2.web;
}
{code}
The Moditect Maven plugin (moditect-maven-plugin) did the right thing here. See
the parent POM for its configuration.
I marked the dependency "optional" in git master.
Please test git master or a snapshot build from
https://repository.apache.org/content/repositories/snapshots/org/apache/commons/commons-configuration2/2.10.1-SNAPSHOT/
was (Author: garydgregory):
Hi [~bob.marinier]
The Servlet API is defined as "provided" in Maven:
{code:xml}
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
{code}
The generated module-info file looks like this:
{code:java}
module org.apache.commons.configuration2 {
requires static com.fasterxml.jackson.databind;
requires static commons.jexl;
requires static org.apache.commons.codec;
requires org.apache.commons.lang3;
requires org.apache.commons.logging;
requires org.apache.commons.text;
requires static commons.beanutils;
requires static commons.jxpath;
requires static commons.vfs2;
requires java.desktop;
requires java.naming;
requires java.sql;
requires java.xml;
requires static org.yaml.snakeyaml;
requires servlet.api;
requires static spring.beans;
requires static spring.core;
requires static xml.resolver;
exports org.apache.commons.configuration2;
exports org.apache.commons.configuration2.beanutils;
exports org.apache.commons.configuration2.builder;
exports org.apache.commons.configuration2.builder.combined;
exports org.apache.commons.configuration2.builder.fluent;
exports org.apache.commons.configuration2.convert;
exports org.apache.commons.configuration2.event;
exports org.apache.commons.configuration2.ex;
exports org.apache.commons.configuration2.interpol;
exports org.apache.commons.configuration2.io;
exports org.apache.commons.configuration2.plist;
exports org.apache.commons.configuration2.reloading;
exports org.apache.commons.configuration2.resolver;
exports org.apache.commons.configuration2.spring;
exports org.apache.commons.configuration2.sync;
exports org.apache.commons.configuration2.tree;
exports org.apache.commons.configuration2.tree.xpath;
exports org.apache.commons.configuration2.web;
}
{code}
The Moditect Maven plugin (moditect-maven-plugin) did the right thing here. See
the parent POM for its configuration.
We could mark the dependency "optional" but I'm not sure if this would cause a
different set of problems.
> Version 2.10.0 fails java.lang.module.FindException: Module servlet.api not
> found
> ---------------------------------------------------------------------------------
>
> Key: CONFIGURATION-839
> URL: https://issues.apache.org/jira/browse/CONFIGURATION-839
> Project: Commons Configuration
> Issue Type: Bug
> Affects Versions: 2.10.0
> Reporter: Bob Marinier
> Priority: Major
> Attachments: reproducer.zip
>
>
> My system was using apache configuration 2.9.0 without issue. After upgrading
> to 2.10.0, I get this error at startup:
> {code:java}
> [ERROR] Error occurred during initialization of boot layer
> [ERROR] java.lang.module.FindException: Module servlet.api not found,
> required by org.apache.commons.configuration2{code}
> I am running on Java 17 on Windows 11. Other than this dependency version
> change, nothing else about my system has changed. For now I'll go back to
> 2.9.0, but I'm worried about being able to upgrade in the future.
> My specific java version is:
> {code:java}
> openjdk version "17.0.10" 2024-01-16
> OpenJDK Runtime Environment Temurin-17.0.10+7 (build 17.0.10+7)
> OpenJDK 64-Bit Server VM Temurin-17.0.10+7 (build 17.0.10+7, mixed mode,
> sharing){code}
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)