If you look up the Javadoc for Grab, you will see that it can be on more things than just an import. It can be on a type, a method, a field, a local variable and so forth. It can't be used on a single statement. The suggestion for placing it on an import statement is really just a suggestion. It is often preferred to place it there rather than on a field or single method because it will be applicable for the whole script regardless of where you place it - you wouldn't want someone to think the @Grab was only applicable for a particular method for instance.
If you just have a single println and nothing else, that is a local variable called "println" which will come from the binding and have value null since you haven't defined any value. Cheers, Paul. <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Virus-free.www.avast.com <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> On Sun, Jan 7, 2024 at 7:21 PM Clemens Quoss <clem...@quoss.de> wrote: > > Hello Bob! > > Thanks for your answer. Yes, of course the right way would be to also use the > 'grabbed' dependency in one way or the other. > > This test script of mine was for investigating what dependency in a large > script of mine pulls in groovy-all:2.4.x making this script unusable with > Groovy 4.x due to classpath clashes. > > Therefore i wrote this small test script putting in only one Grab at a time > and deleting ~/.groovy/grapes between the runs to see what is transitively > pulled from what @Grab. > > And you do not have to write it like this: > > @Grab(...) > import ... > > @Grab(...) > import ... > > Grab is not an annotation for a dedicated import statement. I think this part > of the doc is misleading. > > BTW, i forgot to mention that the script works if i leave out the "Hallo, > Groovy!" part and only work with an empty println. > > So i do still believe it is a bug of some sort. > > Regards > > Clemens > > Am 07.01.2024 um 01:31 schrieb Bob Brown: > > I think that @Grab needs to be ‘attached’ to something like an import. > > > > The doco (https://groovy-lang.org/grape.html) says: > > > > “”” > > Note that we are using an annotated import here, which is the recommended way. > > “”” > > > > Take a look at: > > > > https://dzone.com/articles/groovy-and-jsch-sftp > > > > HTH > > > > BOB > > > > From: Quoß, Clemens (UIT) <clemens.qu...@union-investment.de> > Sent: Sunday, January 7, 2024 7:04 AM > To: users@groovy.apache.org > Subject: Strange behaviour when using the Grab annotation > > > > Hello everyone! > > > > When I am running this script with 4.0.17 … > > >>> > @GrabResolver(name = 'nexus', root = 'https://…') > > @Grab(group = 'com.jcraft', module = 'jsch', version = '0.1.55') > > > > println "Hallo, Groovy!" > > <<< > > … I am getting this: > > >>> > org.codehaus.groovy.control.MultipleCompilationErrorsException: startup > failed: > > C:\Temp\test.groovy: 4: Unexpected input: '"Hallo, Groovy!"' @ line 4, column > 9. > > println "Hallo, Groovy!" > > ^ > > > > 1 error > > <<< > > When I remove the Grapes annotations everything works as expected. > > > > Has anyone encountered similar issues? Is there a cure? Is this considered a > bug? To me it looks that way. But maybe I am missing something here. > > TIA > > Regards > > > > Union IT-Services GmbH > > Clemens Quoß > > FDI-INT > > Senior Software Entwickler > > Neue Mainzer Straße 12 > > 60311 Frankfurt am Main > > > > Tel. +49 69 2567 1241 > > Fax +49 69 2567 61241 > > Mobil +49 151 55157195 > > clemens.qu...@union-investment.de > > > > Sitz der Gesellschaft: Weißfrauenstraße 7, 60311 Frankfurt am Main > > Registergericht: Amtsgericht Frankfurt am Main HRB 33314 > > Geschäftsführer: Stephan Nasterlack, Siegfried Ehlert, Tobias Meier, Gregor > Sauerzapf > >