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)