MissingPropertyException in groovysh
Asked Answered
H

3

10

I run groovysh, and type the following code:

groovy:000> String s = "Hello"
===> Hello
groovy:000> s
ERROR groovy.lang.MissingPropertyException:
No such property: s for class: groovysh_evaluate
        at groovysh_evaluate.run (groovysh_evaluate:2)
        ...
groovy:000>

How to access the s here?

(If I change String s = "Hello" to s = "Hello", I can access it. But I want to know how to access it in the example)


UPDATE

I want to use String s = "Hello" to define a variable because I want to declare the type of it. For example, if I write:

Date date = []

The date will be a java.util.Date. But if I write:

date = []

It will be a ArrayList.

Hern answered 20/8, 2011 at 7:51 Comment(0)
L
11

The expression s = "Hello" sets a shell variable, the expression String s = "Hello" sets a local variable which does not get saved to the shell's environment. Please see the Groovy Shell documentation for more information. I am not quite sure what you are trying to achieve but you might rather want to go with Groovy Console to evaluate Groovy scripts.

Loanloanda answered 20/8, 2011 at 23:42 Comment(2)
thank you, groovy console can let me do it. You mean, there is no way to get the s from String s = ... in groovysh, right?Hern
You could wrap it in a function and return s whenever you need it. That would be another option.Loanloanda
N
1

simply set it to interpreterMode

groovy:000> :set interpreterMode

and you can just straightly use

Date date = []

ref: http://www.groovy-lang.org/groovysh.html#GroovyShell-InterpreterMode

Nicolenicolea answered 21/12, 2015 at 12:30 Comment(1)
TY. This is what I expected as a Python user. now I execute always groovysh --define=interpreterModeBrandebrandea
O
0

You can write

date = [] as Date

to make sure date really has type Date. I had a similar problem and used

bin = [1, 26, 42 ,7] as byte[]
bin.encodeBase64()
Osmen answered 12/6, 2013 at 8:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.