Tomcat 8.5.37 nie uruchamia aplikacji z Openjdk 8u192 z AdoptOpenJDK w Eclipse

0

Korzystałem z Oracle JDK, ale aby uniknąć problemów z licencją, migruję do OpenJDK. Zdecydowałem się na Windows AdoptOpenJdk 8_192, ale mam pewne problemy z uruchomieniem go z Tomcat 8.5 w Eclipse (dzieje się tak tylko przy uruchomieniu z Tomcatem, aplikacje Java na pulpicie działają poprawnie).

Dane wyjściowe konsoli Tomcat są następujące:

    com.google.common.util.concurrent.ExecutionError: java.lang.IncompatibleClassChangeError
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2256)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3990)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3994)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4878)
    at org.jboss.weld.util.cache.LoadingCacheUtils.getCacheValue(LoadingCacheUtils.java:49)
    at org.jboss.weld.util.cache.LoadingCacheUtils.getCastCacheValue(LoadingCacheUtils.java:74)
    at org.jboss.weld.bean.proxy.ClientProxyProvider.getClientProxy(ClientProxyProvider.java:204)
    at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:736)
    at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:762)
    at org.jboss.weld.util.ForwardingBeanManager.getReference(ForwardingBeanManager.java:61)
    at org.jboss.weld.bean.builtin.BeanManagerProxy.getReference(BeanManagerProxy.java:89)
    at org.omnifaces.util.BeansLocal.getReference(BeansLocal.java:104)
    at org.omnifaces.util.BeansLocal.getReference(BeansLocal.java:92)
    at org.omnifaces.util.Beans.getReference(Beans.java:115)
    at org.omnifaces.cdi.eager.EagerBeansRepository.getInstance(EagerBeansRepository.java:66)
    at org.omnifaces.cdi.eager.EagerBeansRepository.instantiateApplicationScopedAndRegisterListenerIfNecessary(EagerBeansRepository.java:78)
    at org.omnifaces.ApplicationListener.contextInitialized(ApplicationListener.java:83)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4745)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5207)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:813)
Caused by: java.lang.IncompatibleClassChangeError
    at java.security.AccessController.doPrivileged(AccessController.java:647)
    at org.omnifaces.cdi.eager.EagerBeansRepository$Proxy$_$$_WeldClientProxy.<clinit>(Unknown Source)
    at java.lang.J9VMInternals.newInstanceImpl(Native Method)
    at java.lang.Class.newInstance(Class.java:1847)
    at org.jboss.weld.security.NewInstanceAction.run(NewInstanceAction.java:33)
    at java.security.AccessController.doPrivileged(AccessController.java:703)
    at org.jboss.weld.bean.proxy.ProxyFactory.create(ProxyFactory.java:303)
    at org.jboss.weld.bean.proxy.ClientProxyFactory.create(ClientProxyFactory.java:111)
    at org.jboss.weld.bean.proxy.ClientProxyProvider.createClientProxy(ClientProxyProvider.java:180)
    at org.jboss.weld.bean.proxy.ClientProxyProvider.createClientProxy(ClientProxyProvider.java:170)
    at org.jboss.weld.bean.proxy.ClientProxyProvider.access$100(ClientProxyProvider.java:45)
    at org.jboss.weld.bean.proxy.ClientProxyProvider$CreateClientProxy.load(ClientProxyProvider.java:56)
    at org.jboss.weld.bean.proxy.ClientProxyProvider$CreateClientProxy.load(ClientProxyProvider.java:52)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3589)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2374)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2337)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2252)
    ... 25 more

Chciałbym wiedzieć, jak rozwiązać ten problem. Z góry dziękuję.

Eduardo Dorneles
źródło

Odpowiedzi:

0

To nie jest prawidłowa odpowiedź na moje pytanie, ale rozwiązana: zanim użyłem OpenJDK z AdoptOpenJDK z JVM OpenJ9, więc zmieniłem na wersję Hotspot i działała.

Być może istnieje pewna niezgodność między maszynami Tomcat 8 i OpenJ9 JVM.

Eduardo Dorneles
źródło