using HikariCP-java6 2.3.9 artifact with Java 8 fails with java.io.IOException: invalid constant type: 15

380 views
Skip to first unread message

Krishna P

unread,
Sep 28, 2015, 10:21:01 AM9/28/15
to HikariCP
Hi Brett,

In our application, we have a requirement to support java6, 7, 8. Our application is packaging  javassist-3.18.2-GA and HikariCP-java6 2.3.9 artifact. 

This works fine in Java 6 and 7, but when the application is run in Java 8, we are getting the following error.

Is there any way to get this (HikariCP-java6 2.3.9 artifact) working with Java 8 ? 

java.lang.ExceptionInInitializerError
	at com.zaxxer.hikari.HikariConfig.(HikariConfig.java:31)
.../* stuff deleted */
Caused by: java.lang.RuntimeException: Fatal exception during proxy generation
	at com.zaxxer.hikari.proxy.JavassistProxyFactory.(JavassistProxyFactory.java:61)
	... 39 more
Caused by: java.lang.RuntimeException: java.io.IOException: invalid constant type: 15
	at javassist.CtClassType.getClassFile2(CtClassType.java:203)
	at javassist.CtClassType.subtypeOf(CtClassType.java:303)
	at javassist.CtClassType.subtypeOf(CtClassType.java:318)
	at javassist.CtClassType.subtypeOf(CtClassType.java:318)
	at javassist.compiler.MemberResolver.compareSignature(MemberResolver.java:247)
	at javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:119)
	at javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:96)
	at javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:704)
	at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
	at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
	at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
	at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:241)
	at javassist.compiler.CodeGen.compileExpr(CodeGen.java:228)
	at javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:597)
	at javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java:424)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:362)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:350)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
	at javassist.compiler.MemberCodeGen.atTryStmnt(MemberCodeGen.java:203)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:366)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:350)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
	at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:291)
	at javassist.compiler.Javac.compileBody(Javac.java:222)
	at javassist.CtBehavior.setBody(CtBehavior.java:401)
	at javassist.CtBehavior.setBody(CtBehavior.java:375)
	at com.zaxxer.hikari.proxy.JavassistProxyFactory.generateProxyClass(JavassistProxyFactory.java:193)
	at com.zaxxer.hikari.proxy.JavassistProxyFactory.(JavassistProxyFactory.java:86)
	at com.zaxxer.hikari.proxy.JavassistProxyFactory.(JavassistProxyFactory.java:57)
	... 39 more
Caused by: java.io.IOException: invalid constant type: 15
	at javassist.bytecode.ConstPool.readOne(ConstPool.java:1090)
	at javassist.bytecode.ConstPool.read(ConstPool.java:1033)
	at javassist.bytecode.ConstPool.(ConstPool.java:149)
	at javassist.bytecode.ClassFile.read(ClassFile.java:764)
	at javassist.bytecode.ClassFile.(ClassFile.java:108)
	at javassist.CtClassType.getClassFile2(CtClassType.java:190)
	... 69 more

thanks,
Krishna

Brett Wooldridge

unread,
Sep 28, 2015, 10:26:25 AM9/28/15
to HikariCP
HikariCP 2.4.0 and above pre-generate proxies at build time, and therefore don't need Javassist at runtime.  Looks like I'll have to backport that in the 2.3.x branch.  Short of that, I'd say try 3.20.0-GA to see if if helps.

-Brett

Krishna P

unread,
Sep 29, 2015, 10:21:57 PM9/29/15
to HikariCP
From the commits, I see that you have already started the back port activity, if you are planning to release the back ported version, I'd rather pick that up. When are you planning to release the back ported version ?

thanks,
Krishna

Brett Wooldridge

unread,
Sep 30, 2015, 2:58:23 AM9/30/15
to HikariCP
I just published it for you.  2.3.10 is available in the Sonatype maven repository, and should be replicated to other repositories within a few hours.

-Brett

Krishna P

unread,
Oct 1, 2015, 1:11:05 AM10/1/15
to HikariCP
Thanks for the quick response !

Krishna P

unread,
Oct 6, 2015, 7:16:39 AM10/6/15
to HikariCP
Hi Brett,

When running with 2.3.10 under Java 6, I am getting this error:

java.lang.UnsupportedClassVersionError: com/zaxxer/hikari/proxy/HikariConnectionProxy : Unsupported major.minor version 51.0

The error is not present under Java 7 or 8. Do you know if this be fixed?

thanks,
Krishna

Brett Wooldridge

unread,
Oct 6, 2015, 11:44:19 AM10/6/15
to HikariCP
This should be fixed now.  I have published 2.3.11 to the Sonatype maven repository, and should be replicated to other repositories within a few hours.

-Brett

Krishna P

unread,
Oct 6, 2015, 1:11:53 PM10/6/15
to HikariCP
with 2.3.11 on Java 6, I am getting a different error:

java.lang.NoClassDefFoundError: java/lang/AutoCloseable
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
	at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
	at com.zaxxer.hikari.proxy.ProxyFactory.getProxyConnection(ProxyFactory.java)
	at com.zaxxer.hikari.pool.BaseHikariPool.getConnection(BaseHikariPool.java:215)
	at com.zaxxer.hikari.pool.BaseHikariPool.getConnection(BaseHikariPool.java:183)
	at com.zaxxer.hikari.pool.BaseHikariPool.initializeConnections(BaseHikariPool.java:553)
	at com.zaxxer.hikari.pool.BaseHikariPool.<init>(BaseHikariPool.java:172)
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:60)
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:48)
	at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:80)

thanks,
Krishna

Brett Wooldridge

unread,
Oct 7, 2015, 1:26:39 AM10/7/15
to HikariCP
Darnit!  The auto-generated proxies still implemented the AutoCloseable interface on Java 6 -- which wasn't introduced until Java 7.  This is fixed now.  v2.3.12 is available.

-Brett

Krishna P

unread,
Oct 7, 2015, 2:23:55 AM10/7/15
to HikariCP
Thanks, this time it worked!
Reply all
Reply to author
Forward
0 new messages