Re: Strange Behavior with Commons-CLI

Gary Gregory <[email protected]> Tue, 24 Jun 2025 07:01:40 -0400
Newsgroups gmane.comp.jakarta.commons.user
Message-ID <CACZkXPxJbVd7=bq1hg3_J2XH_EabvoBOh42GknzBKeun2MdzSg@mail.gmail.com>
--00000000000074185906384f41b7
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hello Kolja,

Thank you for the clarification. Would you say this is a bug in the
Moditect Maven plugin? Because it doesn't follow the JAR specification?

Ty,
Gary

On Tue, Jun 24, 2025, 06:47 Kolja <[email protected]> wrote:

> Hi,
>
> see also
>
> https://github.com/eclipse-jdt/eclipse.jdt.core/issues/2495#issuecomment-=
2254297050
>
> The problem is that the commons-cli jar misses directory entries for
> 'versions/9/' under 'META-INF'.
> The module-info.class was somehow added without them.
>
> The eclipse module name resolver used for the classpath looks for
> directories, does not find them and then reverts to deriving the
> modulename from the filename.
> [
> https://github.com/eclipse-jdt/eclipse.jdt.core/blob/ed787f542d5509ba226f=
0b8b06982d61e81b4622/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/co=
re/builder/ClasspathMultiReleaseJar.java#L83-L85
> ]
>
> Hopefully  someone can fix that for commons-cli and maybe check other
> commons artifacts.
>
> br,
> Kolja
>
> On 23.06.2025 01:09, Gary Gregory wrote:
> > Hopefully you can create an m2e ticket and post a link to it here.
> >
> > Ty,
> > Gary
> >
> >
> >
> > On Sun, Jun 22, 2025, 18:50 Frank <[email protected]>
> wrote:
> >
> >> BTW, Just opened the project in IntelliJ.  Maven POM is unchanged exce=
pt
> >> to up the Commons CLI version to 1.9.0.  No problems with module
> detection.
> >> F.
> >>
> >>> On Jun 22, 2025, at 14:25, Gary Gregory <[email protected]>
> wrote:
> >>>
> >>> On Sun, Jun 22, 2025 at 5:01=E2=80=AFPM Frank <software_frank@runbox.=
com
> .invalid
> >> <mailto:[email protected]>> wrote:
> >>>> I added your snapshot repo, changed my pom.xml and verified in Eclip=
se
> >> that I was truly using commons-cli-1.10.0-SNAPSHOT.jar.  Unfortunately=
,
> I
> >> still see the same problem.  org.apache.commons.cli is not recognized
> as a
> >> module.  I have no trouble believing that M2E is the culprit.  I've ha=
d
> to
> >> put other workarounds in place to avoid its limitations.  If Eclipse
> >> doesn't support some feature of Maven, M2E won't have it.
> >>>> In the jar, I can see a module-info.class, but the source does not
> >> provide it from a simple module-info.java and I don't know how the
> class is
> >> built.  Would you have changed the module name at any point?
> >>> We use the Moditect Maven plugin to build the JPMS metadata through
> >>> the commons-parent POM and properties defined in that POM and in the
> >>> POM for CLI.
> >>>
> >>> Gary
> >>>
> >>>> Thanks again,
> >>>> Frank
> >>>>
> >>>>> On Jun 22, 2025, at 13:30, Gary Gregory <[email protected]>
> >> wrote:
> >>>>> Hm I think our OSGi tests don't run since we ported to JUnit 5.
> >>>>>
> >>>>> Gary
> >>>>>
> >>>>> On Sun, Jun 22, 2025 at 3:26=E2=80=AFPM Gary Gregory <garydgregory@=
gmail.com
> >
> >> wrote:
> >>>>>> Hello Frank,
> >>>>>>
> >>>>>> Are you saying that no matter what version of Commons CLI you use
> and
> >>>>>> then build from the command line with Maven, all is well?
> >>>>>>
> >>>>>> If the above is true, then this suggests one of two things:
> Something
> >>>>>> is wrong with M2E or something is wrong with the OSGi metadata in
> >>>>>> Commons CLI,
> >>>>>>
> >>>>>> I don't know if OSGi matters to M2E but you'd hope it wouldn't sin=
ce
> >>>>>> most JARs out there don't have OSGi metadata.
> >>>>>>
> >>>>>> CLI 1.10.0-SNAPSHOT fixes this OSGi issue (see changes.xml):
> >>>>>>
> >>>>>>> Remove -nouses directive from maven-bundle-plugin. OSGi package
> >> imports now state 'uses' definitions for package imports, this doesn't
> >> affect JPMS (from org.apache.commons:commons-parent:80)
> >>>>>> I would test with a local build of git master or 1.10.0-SNAPSHOT
> from
> >>>>>> our snapshot Maven repository:
> >>>>>> https://repository.apache.org/content/repositories/snapshots/
> >>>>>>
> >>>>>> This would tell us if the OSGi fix above matters.
> >>>>>>
> >>>>>> You could also write a test and submit a PR that tests loading
> Commons
> >>>>>> CLI using OSGi in the same way as Commons Compress in the test
> package
> >>>>>> org.apache.commons.compress.osgi
> >>>>>>
> >>>>>> HTH,
> >>>>>> Gary
> >>>>>>
> >>>>>> On Sun, Jun 22, 2025 at 1:39=E2=80=AFPM Frank <software_frank@runb=
ox.com
> .invalid>
> >> wrote:
> >>>>>>> Hello,
> >>>>>>>
> >>>>>>> I have a Java project with a Maven build in which a module uses
> >> commons-cli.  With version 1.9.0, the Maven build works correctly from
> the
> >> command line, but Eclipse and VS Code give an error that
> >> org.apache.commons.cli cannot be resolved to a module.  The strange
> thing
> >> is that if I drop back to version 1.6.0, the error disappears.  The
> command
> >> line build and the IDE build both work.  Any version after that produc=
es
> >> the issue.  Eclipse lists the commons-cli jar in the Maven dependencie=
s
> for
> >> any version used and they are physically present in ~/.m2.  Adding it
> >> manually to the module path does not help.
> >>>>>>> This is doubtless some problem buried in M2e, but I have not been
> >> able to resolve it for some time.  I'm wondering if you can provide an=
y
> >> insight into what changed after 1.6.0 regarding the configuration as a
> Java
> >> 9+ module.  The error occurs when the system encounters 'requires
> >> transitive org.apache.commons.cli;' in module-info.java.
> >>>>>>> The project is fully modularized and built with Java 21 and Maven
> >> 3.9+.
> >>>>>>> Thanks in advance,
> >>>>>>> Frank
> >>>>>>>
> ---------------------------------------------------------------------
> >>>>>>> To unsubscribe, e-mail: [email protected]
> >>>>>>> For additional commands, e-mail: [email protected]
> >>>>>>>
> >>>>> -------------------------------------------------------------------=
--
> >>>>> To unsubscribe, e-mail: [email protected]
> >>>>> For additional commands, e-mail: [email protected]
> >>>>>
> >>>>
> >>>> --------------------------------------------------------------------=
-
> >>>> To unsubscribe, e-mail: [email protected]
> >>>> For additional commands, e-mail: [email protected]
> >>>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: [email protected] <mailto:
> >> [email protected]>
> >>> For additional commands, e-mail: [email protected] <mailto=
:
> >> [email protected]>
> >>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

--00000000000074185906384f41b7--