Freewind
Freewind

Reputation: 198238

MissingPropertyException in groovysh

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.

Upvotes: 10

Views: 5328

Answers (3)

Aizzat Suhardi
Aizzat Suhardi

Reputation: 767

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

Upvotes: 1

bollin
bollin

Reputation: 355

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()

Upvotes: 0

Benjamin Muschko
Benjamin Muschko

Reputation: 33436

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.

Upvotes: 11

Related Questions