Wednesday, 15 March 2017

JVMCFRE003 bad major version; class=org/apache/derby/jdbc/EmbeddedConnectionPoolDataSource40, offset=6

I saw this today: -

[ERROR   ] An error has occurred in trying to access data source 'jdbc/ilogDataSource': Could not lookup datasource named 'jdbc/ilogDataSource'. Check that the data source exists on the application server or contact your administrator.
An error has occurred in trying to access data source 'jdbc/ilogDataSource': Could not lookup datasource named 'jdbc/ilogDataSource'. Check that the data source exists on the application server or contact your administrator.
[ERROR   ] CWWKE0701E: FrameworkEvent ERROR Bundle:com.ibm.ws.jdbc(id=110) org.osgi.framework.ServiceException: Exception in com.ibm.ws.resource.internal.ResourceFactoryTrackerData$1.getService()
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:222)
at [internal classes]
at javax.naming.InitialContext.lookup(InitialContext.java:423)
at ilog.rules.teamserver.ejb.service.dao.IlrElementDAOFactory.getInstance(IlrElementDAOFactory.java:70)
at ilog.rules.teamserver.ejb.service.IlrSessionFacadeImpl.loginInitializationWithTxnPart1(IlrSessionFacadeImpl.java:414)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
at java.lang.reflect.Method.invoke(Method.java:620)
at ilog.rules.teamserver.transaction.IlrTransactionalInvocationHandler.invoke(IlrTransactionalInvocationHandler.java:39)
at com.sun.proxy.$Proxy36.loginInitializationWithTxnPart1(Unknown Source)
at ilog.rules.teamserver.ejb.service.IlrLocalSessionImpl.loginInitializationWithTxnPart1(IlrLocalSessionImpl.java:64)
at ilog.rules.teamserver.ejb.service.IlrSessionFacadeImpl.login(IlrSessionFacadeImpl.java:393)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
at java.lang.reflect.Method.invoke(Method.java:620)
at ilog.rules.teamserver.transaction.IlrTransactionalInvocationHandler.invoke(IlrTransactionalInvocationHandler.java:39)
at com.sun.proxy.$Proxy36.login(Unknown Source)
at ilog.rules.teamserver.ejb.service.IlrLocalSessionImpl.login(IlrLocalSessionImpl.java:58)
at ilog.rules.teamserver.ejb.service.IlrLocalSessionFactory.makeSession(IlrLocalSessionFactory.java:68)
at ilog.rules.teamserver.ejb.service.IlrLocalSessionFactory.connect(IlrLocalSessionFactory.java:49)
at ilog.rules.teamserver.ejb.service.IlrLocalSessionFactory.connect(IlrLocalSessionFactory.java:59)
at com.ibm.rules.decisioncenter.web.core.UserContext.connect(UserContext.java:48)
at com.ibm.rules.decisioncenter.web.core.ApplicationInterceptor.preHandle(ApplicationInterceptor.java:117)
at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:134)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:913)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:575)
at [internal classes]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at [internal classes]
at com.ibm.rules.decisioncenter.web.core.filters.SecurityCheckPointFilter.doFilter(SecurityCheckPointFilter.java:95)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:207)
at [internal classes]
at com.ibm.rules.decisioncenter.web.core.filters.RemoteSessionFilter.doFilterInternal(RemoteSessionFilter.java:79)
at com.ibm.rules.decisioncenter.web.core.filters.RemoteSessionFilter.doFilter(RemoteSessionFilter.java:59)
at com.ibm.rules.decisioncenter.web.core.filters.SessionFilter.access$001(SessionFilter.java:32)
at com.ibm.rules.decisioncenter.web.core.filters.SessionFilter$1.doFilter(SessionFilter.java:73)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)
at com.ibm.rules.decisioncenter.web.core.filters.SessionFilter.doFilter(SessionFilter.java:70)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:207)
at [internal classes]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:207)
at [internal classes]
at com.ibm.rules.decisioncenter.web.core.filters.HttpPUTRequestFilter.doFilterInternal(HttpPUTRequestFilter.java:65)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:207)
at [internal classes]
Caused by: java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=org/apache/derby/jdbc/EmbeddedConnectionPoolDataSource40, offset=6
at java.lang.ClassLoader.defineClassImpl(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:331)
at com.ibm.ws.classloading.internal.AppClassLoader.definePackageAndClass(AppClassLoader.java:327)
... 54 more

Referencing back to a previous post: -


reminded me to do this: -

/opt/ibm/WebSphere/Liberty/usr/shared/resources/derby/derby.jar!/org/apache/derby/jdbc/EmbeddedConnectionPoolDataSource40.class

which resulted in: -

  Last modified 15-Oct-2016; size 334 bytes
  MD5 checksum 9e105007b71e5d0460499ca4564efd1b
public class org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource40 extends org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource implements javax.sql.ConnectionPoolDataSource
  Deprecated: true
  minor version: 0
  major version: 52
  flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
   #1 = Methodref          #3.#14         //  org/apache/derby/jdbc/EmbeddedConnectionPoolDataSource."<init>":()V
   #2 = Class              #15            //  org/apache/derby/jdbc/EmbeddedConnectionPoolDataSource40
   #3 = Class              #16            //  org/apache/derby/jdbc/EmbeddedConnectionPoolDataSource
   #4 = Class              #17            //  javax/sql/ConnectionPoolDataSource
   #5 = Utf8               serialVersionUID
   #6 = Utf8               J
   #7 = Utf8               ConstantValue
   #8 = Long               -4368824293743156916l
  #10 = Utf8               <init>
  #11 = Utf8               ()V
  #12 = Utf8               Code
  #13 = Utf8               Deprecated
  #14 = NameAndType        #10:#11        //  "<init>":()V
  #15 = Utf8               org/apache/derby/jdbc/EmbeddedConnectionPoolDataSource40
  #16 = Utf8               org/apache/derby/jdbc/EmbeddedConnectionPoolDataSource
  #17 = Utf8               javax/sql/ConnectionPoolDataSource
{
  public org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource40();
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0       
         1: invokespecial #1                  // Method org/apache/derby/jdbc/EmbeddedConnectionPoolDataSource."<init>":()V
         4: return        
}

The previous post took me back to this: -



I checked my JRE version: -

/opt/ibm/WebSphere/Liberty/java/java_1.7.1_64/bin/java -version

java version "1.7.0"
Java(TM) SE Runtime Environment (build pxa6470_27sr3fp40ifix-20160711_01(SR3 FP40+IX90174))
IBM J9 VM (build 2.7, JRE 1.7.0 Linux amd64-64 Compressed References 20160406_298393 (JIT enabled, AOT enabled)
J9VM - R27_Java727_SR3_20160406_0942_B298393
JIT  - tr.r13.java_20160328_114186
GC   - R27_Java727_SR3_20160406_0942_B298393_CMPRSS
J9CL - 20160406_298393)
JCL - 20160421_01 based on Oracle jdk7u101-b14


which confirmed my feelings :-)

I was using a version of Derby DB that was compiled using Java 8 whereas I'm using Java 7.

This was what I had: -


<snip>
The 10.13 release family supports the following Java and JDBC versions:

• Java SE 8 with JDBC 4.2
</snip>

so I switched to: -


<snip>
Support for Java SE 6 and Java SE 7 is being sunsetted. The 10.13 release family will not support those platforms. The 10.12 release family supports the following Java and JDBC versions:

• Java SE 6 and higher with JDBC 4.0, 4.1, and 4.2.
• Java SE 8 compact profile 2.
</snip>

Having downloaded the .ZIP, and expanded it to /tmp I grabbed the .JAR file: -

cd /opt/ibm/WebSphere/Liberty/usr/shared/resources/derby
cp /tmp/db-derby-10.12.1.1-bin/lib/derby.jar .

Job done :-)



No comments: