Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Puzzler: Capitalized file name matching Class name #19

Open
tamouse opened this issue Jun 18, 2016 · 0 comments
Open

Puzzler: Capitalized file name matching Class name #19

tamouse opened this issue Jun 18, 2016 · 0 comments

Comments

@tamouse
Copy link

tamouse commented Jun 18, 2016

In class "Intro to Groovy", I saved my Person class from the console to the file Person.groovy. When I ran:

$ groovy Person.groovy

it threw the following exception:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
/Users/tamara/Projects/groovy-stuff/Person.groovy: 1: Invalid duplicate class definition of class Person : The source /Users/tamara/Projects/groovy-stuff/Person.groovy contains at least two definitions of the class Person.
One of the classes is an explicit generated class using the class statement, the other is a class generated from the script body based on the file name. Solutions are to change the file name or to change the class name.
 @ line 1, column 1.
   class Person {
   ^

1 error

A bit of a puzzler. The "fix" is to make the filename not match the class name.

$ mv Person.groovy person.groovy
Person.groovy -> person.groovy

tamara@pontiki2:~/Projects/groovy-stuff:2016-06-18@11:27:02
$ groovy person.groovy 
[class:class Person, first:big, company:null, last:deal]
[class:class Person, first:big, company:yolo, last:deal]
big deal at yolo

This is the code:

class Person {
String first
String last
String company

String toString() {
  "$first $last at $company".toString()
}

}

Person me = new Person(first: "big", last: "deal")
println me.properties
me.company = "yolo"
println me.properties
println me.toString()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant