The description of IllegalAccessError in the API documentation says:
Thrown if an application attempts to access or modify a field, or to call a method that it does not have access to.
Normally, this error is caught by the compiler; this error can only occur at run time if the definition of a class has incompatibly changed. That means you normally only get this error at runtime when your .class files are not compiled correctly; you may be combining old and new versions of .class files, or maybe you're running your code on a different
Java version that has an incompatibility with the version you compiled it on.
By the way, there's another potential bug in your code.
Do you understand that this sets the date of the calendar to 23
February 2005 (not January)? Months are 0-based, as the API documentation says; so 0 = January, 1 = February, etc.
Also, if you start an integer literal in Java with a 0 (as you did with "01" in the statement above) it is interpreted as an octal (not decimal) number.
You probably meant this: