You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Paul King (Jira)" <ji...@apache.org> on 2020/04/30 22:14:00 UTC

[jira] [Comment Edited] (GROOVY-9432) ClassNotFoundException when attempting to use Picocli via Grapes

    [ https://issues.apache.org/jira/browse/GROOVY-9432?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17097016#comment-17097016 ] 

Paul King edited comment on GROOVY-9432 at 4/30/20, 10:13 PM:
--------------------------------------------------------------

I would consider changing the intro wording. Instead of:
{quote}If necessary, you can use the @Grab annotation to control the version of picocli to use in CliBuilder.
{quote}
Perhaps:
{quote}To use a specific version of picocli, add a dependency to that version in your build configuration. If running scripts using a pre-installed version of Groovy, use the @Grab annotation to control the version of picocli to use in CliBuilder.
{quote}
I would skip GROOVY_2_5_X since we removed the picocli jar only in Groovy 3 (as per GROOVY-9165). In 2_5_X, it comes with a picocli jar, hence no need for the @Grab, and you'd need to first manually remove the pre-installed version before you could swap versions.


was (Author: paulk):
I would consider changing the intro wording. Instead of:
bq. If necessary, you can use the @Grab annotation to control the version of picocli to use in CliBuilder.
Perhaps:
bq. To use a specific version of picocli, add a dependency to that version in your build configuration. If running scripts using a pre-installed version of Groovy, use the @Grab annotation to control the version of picocli to use in CliBuilder.

I would skip GROOVY_2_5_X since we removed the picocli jar only in Groovy 3 (as per GROOVY-9165). In 2_5_X, it comes with a picocli jar, hence no need for the @Grab, and you'd need to first manually remove it before you could swap versions.

> ClassNotFoundException when attempting to use Picocli via Grapes
> ----------------------------------------------------------------
>
>                 Key: GROOVY-9432
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9432
>             Project: Groovy
>          Issue Type: Bug
>          Components: Grape
>    Affects Versions: 3.0.0, 3.0.1
>         Environment: Reproduced under both macOS (Groovy 3.0.1 installed manually and via MacPorts) and Debian (Groovy installed via SDKMAN).
>            Reporter: Marc Simpson
>            Assignee: Remko Popma
>            Priority: Major
>             Fix For: 3.0.4
>
>         Attachments: image-2020-03-03-14-30-10-210.png
>
>
> (Issue originally raised as: https://github.com/remkop/picocli/issues/970)
> Consider the following minimal script:
> {noformat}
> @Grab('info.picocli:picocli:4.2.0')
> import groovy.cli.picocli.CliBuilder
> def cli = new CliBuilder()
> {noformat}
> Under Groovy 2.5.9, this runs without error; with 3.0.1, however, I see:
> {noformat}
> $ groovy cli.groovy 
> Caught: java.lang.NoClassDefFoundError: picocli/CommandLine$ParameterException
> java.lang.NoClassDefFoundError: picocli/CommandLine$ParameterException
> at cli.run(cli.groovy:4)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> Caused by: java.lang.ClassNotFoundException: picocli.CommandLine$ParameterException
> ... 4 more
> {noformat}
> The jar is definitely downloaded to {{~/.groovy/grapes}} and both versions of Groovy output
> {noformat}
> Resolving dependency: info.picocli#picocli;4.2.0 {default=[default]}
> Preparing to download artifact info.picocli#picocli;4.2.0!picocli.jar
> {noformat}
> when {{-Dgroovy.grape.report.downloads=true}} is supplied.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)