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)