High Sierra + Intellij 2018.1 + Jetty Pluggin = java.lang.IncompatibleClassChangeError: Implementing class
Followed by one person
I am in the process of migrating to a new work macbook pro and there is a very noticeable difference that is preventing me from deploying a WAR to my local Jetty. My new macbook pro is running MacOs High Sierra 10.13.4. My old macbook pro is running MacOs Sierra 10.12.6. Both are running Intellij 2018.1. All Intellij settings are the exact same on both new and old mac. The only difference is that when i try to start a local Jetty server on my new mac, it consistently fails with the error "java.lang.IncompatibleClassChangeError: Implementing class". Nothing else is different but not being able to standup the WAR in Jetty.
Here is a full stdout dump. Please help!
Note: i'm snipping out (<snip>) sensitive parts of the stdout.
/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin/java -DSTOP.PORT=0 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -DOPTIONS=jmx "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=53321:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /opt/jetty-8080/start.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/lib/tools.jar org.eclipse.jetty.start.Main /private/var/folders/y_/6_218hbx12b0g4289dsg5fxw0000gn/T/context1748config/jetty-contexts.xml
Detected server http port: 8080
objc[4003]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin/java (0x109e2d4c0) and /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x109eb34e0). One of the two will be used. Which one is undefined.
[2018-04-10 12:44:46,590] Artifact Gradle :<snip> : <snip>-2.3.57-54116ae.war: Waiting for server connection to start artifact deployment...
2018-04-10 12:44:47.182:INFO::main: Logging initialized @538ms
2018-04-10 12:44:47.420:INFO:oejs.Server:main: jetty-9.2.2.v20140723
STOP.PORT=53331
STOP.KEY=qbamypl9girk
2018-04-10 12:44:47.489:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/opt/jetty-8080/webapps/] at interval 1
2018-04-10 12:44:47.493:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/private/var/folders/y_/6_218hbx12b0g4289dsg5fxw0000gn/T/context1762deploy/] at interval 1
2018-04-10 12:44:47.531:INFO:oejs.ServerConnector:main: Started ServerConnector@24663187{HTTP/1.1}{0.0.0.0:8080}
2018-04-10 12:44:47.532:INFO:oejs.Server:main: Started @898ms
Connected to server
[2018-04-10 12:44:47,690] Artifact Gradle :<snip> :<snip>-2.3.57-54116ae.war: Artifact is being deployed, please wait...
2018-04-10 12:44:51.414:WARN:oejw.WebAppContext:Scanner-1: Failed startup of context o.e.j.w.WebAppContext@3db9b677{/,file:/private/var/folders/y_/6_218hbx12b0g4289dsg5fxw0000gn/T/jetty-0.0.0.0-8080-<snip>-2.3.57-54116ae.war-_-any-521257421048029548.dir/webapp/,STARTING}{/Users/jguth/repos/<snip>/build/libs/<snip>-2.3.57-54116ae.war}
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.visit(IterativeDescriptorProcessor.java:85)
at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.process(IterativeDescriptorProcessor.java:72)
at org.eclipse.jetty.webapp.MetaData.resolve(MetaData.java:394)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1332)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:497)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:41)
at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)
at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:498)
at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:146)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:180)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:64)
at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609)
at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:528)
at org.eclipse.jetty.util.Scanner.scan(Scanner.java:391)
at org.eclipse.jetty.util.Scanner$1.run(Scanner.java:329)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
Caused by:
java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at org.eclipse.jetty.webapp.WebAppClassLoader.findClass(WebAppClassLoader.java:482)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:440)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:402)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at org.eclipse.jetty.webapp.WebAppClassLoader.findClass(WebAppClassLoader.java:482)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:440)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:402)
at com.netflix.governator.lifecycle.ClasspathScanner.doScanning(ClasspathScanner.java:141)
at com.netflix.governator.lifecycle.ClasspathScanner.<init>(ClasspathScanner.java:82)
at com.netflix.governator.lifecycle.ClasspathScanner.<init>(ClasspathScanner.java:61)
at com.netflix.governator.guice.LifecycleInjector.createStandardClasspathScanner(LifecycleInjector.java:286)
at com.netflix.karyon.server.ServerBootstrap.initialize(ServerBootstrap.java:114)
at com.netflix.karyon.server.KaryonServer.<init>(KaryonServer.java:166)
at com.netflix.karyon.server.KaryonServer.<init>(KaryonServer.java:138)
at com.netflix.karyon.server.guice.KaryonGuiceContextListener.<init>(KaryonGuiceContextListener.java:62)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at java.lang.Class.newInstance(Class.java:383)
at org.eclipse.jetty.server.handler.ContextHandler$Context.createInstance(ContextHandler.java:2370)
at org.eclipse.jetty.webapp.StandardDescriptorProcessor.newListenerInstance(StandardDescriptorProcessor.java:1984)
at org.eclipse.jetty.webapp.StandardDescriptorProcessor.visitListener(StandardDescriptorProcessor.java:1927)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.visit(IterativeDescriptorProcessor.java:85)
at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.process(IterativeDescriptorProcessor.java:72)
at org.eclipse.jetty.webapp.MetaData.resolve(MetaData.java:394)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1332)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:497)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:41)
at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186)
at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:498)
at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:146)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:180)
at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:64)
at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:609)
at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:528)
at org.eclipse.jetty.util.Scanner.scan(Scanner.java:391)
at org.eclipse.jetty.util.Scanner$1.run(Scanner.java:329)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
[2018-04-10 12:44:51,791] Artifact Gradle :<snip> :<snip>-2.3.57-54116ae.war: Artifact is deployed successfully
[2018-04-10 12:44:51,791] Artifact Gradle :<snip> :<snip>-2.3.57-54116ae.war: Deploy took 4,101 milliseconds
Please sign in to leave a comment.
I found a solution through trial and error, but i don't understand the internals so i can't say why it works one way and not the other.
The version of Jetty I was using was 9.2.2. It seems that 9.2.2 does NOT work with Intellij + MacOs High Sierra.
I then tried the latest Jetty version of 9.4.9. It seems that 9.4.9 does work with Intellij + MacOs High Sierra.