You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openwebbeans.apache.org by "Donald Kwakkel (JIRA)" <ji...@apache.org> on 2018/07/12 13:13:00 UTC
[jira] [Commented] (OWB-1248) defineClass used which is not
supported by java 11
[ https://issues.apache.org/jira/browse/OWB-1248?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16541608#comment-16541608 ]
Donald Kwakkel commented on OWB-1248:
-------------------------------------
Thanks for quick response! I did not test it yet, but looked at code change. I expected something like:
{code:java}
definedClass = (Class<T>) MethodHandles.lookup().defineClass(proxyBytes);
{code}
Anyway, if the current fix is working it is fine with me.
> defineClass used which is not supported by java 11
> --------------------------------------------------
>
> Key: OWB-1248
> URL: https://issues.apache.org/jira/browse/OWB-1248
> Project: OpenWebBeans
> Issue Type: Bug
> Affects Versions: 2.0.6
> Reporter: Donald Kwakkel
> Assignee: Romain Manni-Bucau
> Priority: Critical
> Fix For: 2.0.7
>
>
> Not sure if openwebbeans will support java 11, but with latest java 11 version it is not possible to start tomee:
> org.apache.openejb.OpenEJBException: Creating application failed: /opt/opentext/defaultInst/webroot: Cannot get Unsafe.defineClass
> at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:1096)
> at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:757)
> at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1303)
> at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1125)
> at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:133)
> at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
> at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5154)
> at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
> at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:754)
> at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730)
> at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
> at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:629)
> at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1839)
> at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
> at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
> at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: java.lang.IllegalStateException: Cannot get Unsafe.defineClass
> at org.apache.webbeans.proxy.AbstractProxyFactory$4.run(AbstractProxyFactory.java:812)
> at org.apache.webbeans.proxy.AbstractProxyFactory$4.run(AbstractProxyFactory.java:801)
> at java.base/java.security.AccessController.doPrivileged(Native Method)
> at org.apache.webbeans.proxy.AbstractProxyFactory.initializeUnsafe(AbstractProxyFactory.java:800)
> at org.apache.webbeans.proxy.AbstractProxyFactory.<init>(AbstractProxyFactory.java:91)
> at org.apache.webbeans.proxy.InterceptorDecoratorProxyFactory.<init>(InterceptorDecoratorProxyFactory.java:77)
> at org.apache.webbeans.config.WebBeansContext.<init>(WebBeansContext.java:153)
> at org.apache.webbeans.config.WebBeansContext.<init>(WebBeansContext.java:116)
> at org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:167)
> at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
> at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:963)
> ... 17 more
> Caused by: java.lang.NoSuchMethodException: sun.misc.Unsafe.defineClass(java.lang.String, [B, int, int, java.lang.ClassLoader, java.security.ProtectionDomain)
> at java.base/java.lang.Class.getDeclaredMethod(Class.java:2476)
> at org.apache.webbeans.proxy.AbstractProxyFactory$4.run(AbstractProxyFactory.java:807)
> ... 27 more
> Reason is that defineClass is used which is no longer supported with java 11 (at least here, maybe also on other places):(
> webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java:
> return unsafeClass.getDeclaredMethod("defineClass",
> String.class, byte[].class, int.class, int.class, ClassLoader.class, ProtectionDomain.class);
> Same issue has tomee: https://issues.apache.org/jira/browse/TOMEE-2200
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)