IllegalAccessError creates a GregorianCalendar

Change . It is probably important that the class name is unusual at the top of the stack trace. I updated the stack trace to provide a more obvious example of the weird class name we saw to emphasize this point. Usually the full class name should begin before .<init>.

We observe the following error in our Spring boot microservice while processing some incoming requests. It is intermittent - it occurs only with a periodic restart and so far has occurred only on Solaris mailboxes in our data center (cannot be played on the development machine).

It started after adding some new features; however, we do not believe that this new functionality includes everything that, in our opinion, can cause these problems with the Gregorian ones, etc. In particular, these are the core JDK classes.

We are using Spring Boot 1.5.4.RELEASE and Java 1.8.0_31 on Solaris 10.

java.lang.IllegalAccessError: tried to access method p>G^L.<init>(Ljava/util/TimeZone;)V from class sun.util.calendar.Gregorian
    at sun.util.calendar.Gregorian.newCalendarDate(Gregorian.java:85)
    at java.util.GregorianCalendar.<init>(GregorianCalendar.java:738)
    at java.util.Calendar$Builder.build(Calendar.java:1482)
    at sun.util.locale.provider.CalendarProviderImpl.getInstance(CalendarProviderImpl.java:88)
    at java.util.Calendar.createCalendar(Calendar.java:1666)
    at java.util.Calendar.getInstance(Calendar.java:1655)
    at java.text.SimpleDateFormat.initializeCalendar(SimpleDateFormat.java:657)
    at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:601)
    at org.apache.catalina.valves.AbstractAccessLogValve$DateFormatCache$Cache.<init>(AbstractAccessLogValve.java:251)
    at org.apache.catalina.valves.AbstractAccessLogValve$DateFormatCache$Cache.<init>(AbstractAccessLogValve.java:237)
    at org.apache.catalina.valves.AbstractAccessLogValve$DateFormatCache$Cache.<init>(AbstractAccessLogValve.java:233)
    at org.apache.catalina.valves.AbstractAccessLogValve$DateFormatCache$Cache.<init>(AbstractAccessLogValve.java:207)
    at org.apache.catalina.valves.AbstractAccessLogValve$DateFormatCache.<init>(AbstractAccessLogValve.java:347)
    at org.apache.catalina.valves.AbstractAccessLogValve$1.initialValue(AbstractAccessLogValve.java:392)
    at org.apache.catalina.valves.AbstractAccessLogValve$1.initialValue(AbstractAccessLogValve.java:389)
    at java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:180)
    at java.lang.ThreadLocal.get(ThreadLocal.java:170)
    at org.apache.catalina.valves.AbstractAccessLogValve$DateAndTimeElement.addElement(AbstractAccessLogValve.java:1015)
    at org.apache.catalina.valves.AbstractAccessLogValve.log(AbstractAccessLogValve.java:653)
    at org.apache.catalina.core.AccessLogAdapter.log(AccessLogAdapter.java:48)
    at org.apache.catalina.core.ContainerBase.logAccess(ContainerBase.java:1065)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:401)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
+4
source share

Source: https://habr.com/ru/post/1693521/


All Articles