-
Notifications
You must be signed in to change notification settings - Fork 13k
Closed
Description
MyBatis version
3.5.14
Database vendor and version
H2 and PostgreSQL (not really important)
Test case or example project
I don't have anything simple at this time.
Steps to reproduce
We're using an OSGi runtime (Karaf with Felix) and have some classes which require enhancement. On Java 8 this works as expected.
When using Java 11 this leads to NoClassDefFoundException
for WriteReplaceInterface
, this can be resolved by adding
org.apache.ibatis.executor.loader
to our Import-Package
. Unfortunately this exposes the same exception but for
ProxyObject
which is in a package not exported by MyBatis.
Expected result
No runtime errors :)
Actual result
Suppressed: java.lang.NoClassDefFoundError: org/apache/ibatis/executor/loader/WriteReplaceInterface
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.System$2.defineClass(System.java:2144)
at java.base/java.lang.invoke.MethodHandles$Lookup.defineClass(MethodHandles.java:962)
at org.apache.ibatis.javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:295)
at org.apache.ibatis.javassist.util.proxy.DefineClassHelper$Java11.defineClass(DefineClassHelper.java:48)
at org.apache.ibatis.javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:260)
at org.apache.ibatis.javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:154)
at org.apache.ibatis.javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:640)
at org.apache.ibatis.javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:624)
at org.apache.ibatis.javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:560)
at org.apache.ibatis.javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:481)
at org.apache.ibatis.javassist.util.proxy.ProxyFactory.create(ProxyFactory.java:828)
at org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory.createStaticProxy(JavassistProxyFactory.java:93)
at org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory$EnhancedResultObjectProxyImpl.createProxy(JavassistProxyFactory.java:127)
at org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory.createProxy(JavassistProxyFactory.java:61)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:665)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:411)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:366)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:337)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:310)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:202)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:66)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:80)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:65)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:90)
at org.sonatype.nexus.datastore.mybatis.EntityExecutor.lambda$2(EntityExecutor.java:111)
at org.sonatype.nexus.datastore.mybatis.EntityExecutor.call(EntityExecutor.java:200)
at org.sonatype.nexus.datastore.mybatis.EntityExecutor.query(EntityExecutor.java:111)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
at org.sonatype.nexus.datastore.mybatis.DataAccessSqlSession.selectList(DataAccessSqlSession.java:73)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:75)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:87)
at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:141)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)
... 16 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.apache.ibatis.executor.loader.WriteReplaceInterface
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:594)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
at org.apache.felix.framework.BundleWiringImpl.doImplicitBootDelegation(BundleWiringImpl.java:1785)
at org.apache.felix.framework.BundleWiringImpl.tryImplicitBootDelegation(BundleWiringImpl.java:1714)
at org.apache.felix.framework.BundleWiringImpl.searchDynamicImports(BundleWiringImpl.java:1667)
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1543)
at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:78)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1950)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
... 70 common frames omitted
Suppressed: java.lang.NoClassDefFoundError: org/apache/ibatis/javassist/util/proxy/ProxyObject
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.System$2.defineClass(System.java:2144)
at java.base/java.lang.invoke.MethodHandles$Lookup.defineClass(MethodHandles.java:962)
at org.apache.ibatis.javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:295)
at org.apache.ibatis.javassist.util.proxy.DefineClassHelper$Java11.defineClass(DefineClassHelper.java:48)
at org.apache.ibatis.javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:260)
at org.apache.ibatis.javassist.util.proxy.FactoryHelper.toClass(FactoryHelper.java:154)
at org.apache.ibatis.javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:640)
at org.apache.ibatis.javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:624)
at org.apache.ibatis.javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:560)
at org.apache.ibatis.javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:481)
at org.apache.ibatis.javassist.util.proxy.ProxyFactory.create(ProxyFactory.java:828)
at org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory.createStaticProxy(JavassistProxyFactory.java:93)
at org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory$EnhancedResultObjectProxyImpl.createProxy(JavassistProxyFactory.java:127)
at org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory.createProxy(JavassistProxyFactory.java:61)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:665)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:411)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:366)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:337)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:310)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:202)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:66)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:80)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:65)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:90)
at org.sonatype.nexus.datastore.mybatis.EntityExecutor.query(EntityExecutor.java:107)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
at org.sonatype.nexus.datastore.mybatis.DataAccessSqlSession.selectList(DataAccessSqlSession.java:73)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:75)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:87)
at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:141)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)
... 16 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.apache.ibatis.javassist.util.proxy.ProxyObject
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:594)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
at org.apache.felix.framework.BundleWiringImpl.doImplicitBootDelegation(BundleWiringImpl.java:1785)
at org.apache.felix.framework.BundleWiringImpl.tryImplicitBootDelegation(BundleWiringImpl.java:1714)
at org.apache.felix.framework.BundleWiringImpl.searchDynamicImports(BundleWiringImpl.java:1667)
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1543)
at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:78)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1950)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
... 68 common frames omitted
Metadata
Metadata
Assignees
Labels
No labels