Derby
  1. Derby
  2. DERBY-4364

Cannot create an instance of generated class org.apache.derby.exe.acf81e0010x0123x6e25x38c2x00000616b5f80.

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Critical Critical
    • Resolution: Won't Fix
    • Affects Version/s: 10.5.3.0
    • Fix Version/s: None
    • Component/s: JDBC
    • Environment:
    • Urgency:
      Urgent
    • Issue & fix info:
      Newcomer
    • Bug behavior facts:
      Crash

      Description

      This issue is quite like issue DERBY-4142, but I think the root cause is different.

      The java code which raise this error is:
      rs=stmt.executeQuery("SELECT ID FROM T_SYS_RS_PACKAGE_MASTER WHERE EXISTS (SELECT * FROM T_VC_MASTER MA WHERE MA.SUBCLASS_TABLE_NAME='T_SYS_RS_PACKAGE_MASTER' AND MA.SUBCLASS_TABLE_ID=T_SYS_RS_PACKAGE_MASTER.ID AND MA.NAME='"PackageName"')");

      The error message tells that create an instance of generated class acf81e0010x0123x6e25x38c2x00000616b5f80 fail caused by java.lang.NoClassDefFoundError: org/apache/derby/impl/sql/execute/GenericQualifier. But I see that this GenericQualifier.class is put in derby.jar, which is put in WEB-INF\lib folder. so I guess this issue may be caused by the classloader switch somewhere, may be in acf81e0010x0123x6e25x38c2x00000616b5f80. the new classloader may not able to find a class in WEB-INF\lib\derby.jar. Anyway, just a guess

      error log is captured:
      java.sql.SQLException: Cannot create an instance of generated class org.apache.derby.exe.acf81e0010x0123x6e25x38c2x00000616b5f80.
      at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
      at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:87)
      at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:223)
      at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:398)
      at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:346)
      at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2201)
      at org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
      at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:614)
      at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(EmbedStatement.java:152)
      at Concept.Resource.Server.derby.CCheckInResources.checkInResources(CCheckInResources.java:342)
      at Concept.Resource.Server.derby.CCheckInResources.SubmitTransaction(CCheckInResources.java:223)
      at Concept.Transaction.Server.CTransactionServer.doPost(CTransactionServer.java:722)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      at sun.reflect.GeneratedMethodAccessor231.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:269)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
      at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:301)
      at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283)
      at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56)
      at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
      at java.security.AccessController.doPrivileged(Native Method)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
      at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
      at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
      at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
      at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
      at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
      at java.lang.Thread.run(Thread.java:595)
      Caused by: java.sql.SQLException: Java exception: 'org/apache/derby/impl/sql/execute/GenericQualifier: java.lang.NoClassDefFoundError'.
      at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
      at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:87)
      at org.apache.derby.impl.jdbc.Util.javaException(Util.java:244)
      at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:403)
      ... 37 more
      Caused by: java.lang.NoClassDefFoundError: org/apache/derby/impl/sql/execute/GenericQualifier
      at org.apache.derby.impl.sql.execute.GenericExecutionFactory.getQualifier(GenericExecutionFactory.java:250)
      at org.apache.derby.exe.acf81e0010x0123x6e25x38c2x00000616b5f80.postConstructor(Unknown Source)
      at org.apache.derby.impl.services.reflect.LoadedGeneratedClass.newInstance(LoadedGeneratedClass.java:71)
      at org.apache.derby.impl.services.reflect.ReflectGeneratedClass.newInstance(ReflectGeneratedClass.java:60)
      at org.apache.derby.impl.sql.GenericActivationHolder.<init>(GenericActivationHolder.java:129)
      at org.apache.derby.impl.sql.GenericPreparedStatement.getActivation(GenericPreparedStatement.java:234)
      at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:609)
      ... 32 more

        Activity

        LiuZhenKe created issue -
        Hide
        LiuZhenKe added a comment -

        In order to verify whether the issue is caused by the classloader, I add the following line before calling rs=stmt.executeQuery("...");
        Class.forName("org.apache.derby.impl.sql.execute.GenericQualifier");

        After that and retest, the issue become:

        java.sql.SQLException: Java exception: 'org/apache/derby/impl/sql/execute/GenericResultSetFactory: java.lang.NoClassDefFoundError'.
        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:87)
        at org.apache.derby.impl.jdbc.Util.javaException(Util.java:244)
        at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:403)
        at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:346)
        at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2201)
        at org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1323)
        at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:625)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(EmbedStatement.java:152)
        at Concept.Resource.Server.derby.CCheckInResources.checkInResources(CCheckInResources.java:343)
        at Concept.Resource.Server.derby.CCheckInResources.SubmitTransaction(CCheckInResources.java:223)
        at Concept.Transaction.Server.CTransactionServer.doPost(CTransactionServer.java:722)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at sun.reflect.GeneratedMethodAccessor231.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:269)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
        at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:301)
        at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283)
        at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56)
        at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:595)
        Caused by: java.lang.NoClassDefFoundError: org/apache/derby/impl/sql/execute/GenericResultSetFactory
        at org.apache.derby.impl.sql.execute.GenericExecutionFactory.getResultSetFactory(GenericExecutionFactory.java:133)
        at org.apache.derby.impl.sql.execute.BaseActivation.getResultSetFactory(BaseActivation.java:624)
        at org.apache.derby.exe.acf81e0010x0123x6ee4x9161x000002d736180.fillResultSet(Unknown Source)
        at org.apache.derby.exe.acf81e0010x0123x6ee4x9161x000002d736180.execute(Unknown Source)
        at org.apache.derby.impl.sql.GenericActivationHolder.execute(GenericActivationHolder.java:352)
        at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:414)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:297)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1235)
        ... 33 more

        look likes 'org.apache.derby.impl.sql.execute.GenericQualifier' has been loaded, but another class 'org/apache/derby/impl/sql/execute/GenericResultSetFactory' not found due to the same issue. so It should be the issue of classloader.

        Show
        LiuZhenKe added a comment - In order to verify whether the issue is caused by the classloader, I add the following line before calling rs=stmt.executeQuery("..."); Class.forName("org.apache.derby.impl.sql.execute.GenericQualifier"); After that and retest, the issue become: java.sql.SQLException: Java exception: 'org/apache/derby/impl/sql/execute/GenericResultSetFactory: java.lang.NoClassDefFoundError'. at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45) at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:87) at org.apache.derby.impl.jdbc.Util.javaException(Util.java:244) at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:403) at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:346) at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2201) at org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81) at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1323) at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:625) at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(EmbedStatement.java:152) at Concept.Resource.Server.derby.CCheckInResources.checkInResources(CCheckInResources.java:343) at Concept.Resource.Server.derby.CCheckInResources.SubmitTransaction(CCheckInResources.java:223) at Concept.Transaction.Server.CTransactionServer.doPost(CTransactionServer.java:722) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at sun.reflect.GeneratedMethodAccessor231.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:269) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAsPrivileged(Subject.java:517) at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:301) at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283) at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56) at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189) at java.security.AccessController.doPrivileged(Native Method) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) at java.lang.Thread.run(Thread.java:595) Caused by: java.lang.NoClassDefFoundError: org/apache/derby/impl/sql/execute/GenericResultSetFactory at org.apache.derby.impl.sql.execute.GenericExecutionFactory.getResultSetFactory(GenericExecutionFactory.java:133) at org.apache.derby.impl.sql.execute.BaseActivation.getResultSetFactory(BaseActivation.java:624) at org.apache.derby.exe.acf81e0010x0123x6ee4x9161x000002d736180.fillResultSet(Unknown Source) at org.apache.derby.exe.acf81e0010x0123x6ee4x9161x000002d736180.execute(Unknown Source) at org.apache.derby.impl.sql.GenericActivationHolder.execute(GenericActivationHolder.java:352) at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:414) at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:297) at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1235) ... 33 more look likes 'org.apache.derby.impl.sql.execute.GenericQualifier' has been loaded, but another class 'org/apache/derby/impl/sql/execute/GenericResultSetFactory' not found due to the same issue. so It should be the issue of classloader.
        Hide
        Bryan Pendleton added a comment -

        Sometimes problems like this are caused by having multiple versions of Derby in the classpath,
        and getting some of the jars loaded from one Derby version, and other jars loaded from
        a different incompatible Derby version. Since the Derby jars are "sealed", you then get
        classloader errors like these.

        The auto-loading JDBC driver sometimes triggers such class loading conflicts by loading
        some of the Derby classes unexpectedly.

        I think that if you have derbytools.jar in the classpath, you should be able to call

        org.apache.derby.tools.sysinfo.getInfo(System.err);

        in your program, and it should print a bunch of diagnostic information about the Derby
        environment to System.err (you can pass a different PrintWriter to the getInfo() call if you
        want and it will print the information there).

        That may give you more clues about what the environment is.

        Another thing you can try is using the '-verbose:class' argument to the JVM, which I think will
        give you some information about which classes are loaded from which jars.

        Lastly, you might try attaching a debugger, or using a tool like VisualVM, and see if it
        can help you figure out which Derby classes are being loaded from which Derby jars

        Show
        Bryan Pendleton added a comment - Sometimes problems like this are caused by having multiple versions of Derby in the classpath, and getting some of the jars loaded from one Derby version, and other jars loaded from a different incompatible Derby version. Since the Derby jars are "sealed", you then get classloader errors like these. The auto-loading JDBC driver sometimes triggers such class loading conflicts by loading some of the Derby classes unexpectedly. I think that if you have derbytools.jar in the classpath, you should be able to call org.apache.derby.tools.sysinfo.getInfo(System.err); in your program, and it should print a bunch of diagnostic information about the Derby environment to System.err (you can pass a different PrintWriter to the getInfo() call if you want and it will print the information there). That may give you more clues about what the environment is. Another thing you can try is using the '-verbose:class' argument to the JVM, which I think will give you some information about which classes are loaded from which jars. Lastly, you might try attaching a debugger, or using a tool like VisualVM, and see if it can help you figure out which Derby classes are being loaded from which Derby jars
        Hide
        LiuZhenKe added a comment -

        Here is the information after calling org.apache.derby.tools.sysinfo.getInfo(System.err);

        ------------------ Java Information ------------------
        Java Version: 1.5.0_11
        Java Vendor: Sun Microsystems Inc.
        Java home: D:\Java\jdk5\jdk1.5.0_11\jre
        Java classpath: D:\Java\jdk5\jdk1.5.0_11\lib\tools.jar;D:\TomcatPublic\doTomcat\bin\bootstrap.jar
        OS name: Windows 2003
        OS architecture: x86
        OS version: 5.2
        Java user name: jhost
        Java user home: C:\Documents and Settings\jhost
        Java user dir: D:\TomcatPublic\doTomcat\bin
        java.specification.name: Java Platform API Specification
        java.specification.version: 1.5
        --------- Derby Information --------
        JRE - JDBC: J2SE 5.0 - JDBC 3.0
        [D:\Apache2.2\htdocs\userspace\liuzk01\wwwroot\WEB-INF\lib\derby.jar] 10.5.3.0 - (802917)
        [D:\Apache2.2\htdocs\userspace\liuzk01\wwwroot\WEB-INF\lib\derbytools.jar] 10.5.3.0 - (802917)
        [Java Security Exception: access denied (java.io.FilePermission D:\Java\jdk5\jdk1.5.0_11\lib\tools.jar read)] <null>
        ------------------------------------------------------
        ----------------- Locale Information -----------------
        ------------------------------------------------------

        From this information, the derby.jar is correct.

        BTW, I am not able to add '-verbose:class' to the hosting server jhost, because I am not the owner of this server.

        My concern is that, the load class fail only take places after the dynamic class org.apache.derby.exe.acf81e0010x0123x6ee4x9161x000002d736180 is loaded, actually, I can manually load these classes before dynamic class. please reference my example:
        Class.forName("org.apache.derby.impl.sql.execute.GenericQualifier");
        Class.forName("org.apache.derby.impl.sql.execute.GenericResultSetFactory");
        Class.forName("org.apache.derby.impl.sql.execute.BulkTableScanResultSet");
        Class.forName("org.apache.derby.impl.sql.execute.HashScanResultSet");
        Class.forName("org.apache.derby.impl.sql.execute.HashJoinResultSet");
        Class.forName("org.apache.derby.impl.sql.execute.ProjectRestrictResultSet");
        rs=stmt.executeQuery("SELECT ID FROM T_SYS_RS_PACKAGE_MASTER WHERE EXISTS (SELECT * FROM T_VC_MASTER MA WHERE MA.SUBCLASS_TABLE_NAME='T_SYS_RS_PACKAGE_MASTER' AND MA.SUBCLASS_TABLE_ID=T_SYS_RS_PACKAGE_MASTER.ID AND MA.NAME='"PackageName"')");

        this code run well no fail.

        Show
        LiuZhenKe added a comment - Here is the information after calling org.apache.derby.tools.sysinfo.getInfo(System.err); ------------------ Java Information ------------------ Java Version: 1.5.0_11 Java Vendor: Sun Microsystems Inc. Java home: D:\Java\jdk5\jdk1.5.0_11\jre Java classpath: D:\Java\jdk5\jdk1.5.0_11\lib\tools.jar;D:\TomcatPublic\doTomcat\bin\bootstrap.jar OS name: Windows 2003 OS architecture: x86 OS version: 5.2 Java user name: jhost Java user home: C:\Documents and Settings\jhost Java user dir: D:\TomcatPublic\doTomcat\bin java.specification.name: Java Platform API Specification java.specification.version: 1.5 --------- Derby Information -------- JRE - JDBC: J2SE 5.0 - JDBC 3.0 [D:\Apache2.2\htdocs\userspace\liuzk01\wwwroot\WEB-INF\lib\derby.jar] 10.5.3.0 - (802917) [D:\Apache2.2\htdocs\userspace\liuzk01\wwwroot\WEB-INF\lib\derbytools.jar] 10.5.3.0 - (802917) [Java Security Exception: access denied (java.io.FilePermission D:\Java\jdk5\jdk1.5.0_11\lib\tools.jar read)] <null> ------------------------------------------------------ ----------------- Locale Information ----------------- ------------------------------------------------------ From this information, the derby.jar is correct. BTW, I am not able to add '-verbose:class' to the hosting server jhost, because I am not the owner of this server. My concern is that, the load class fail only take places after the dynamic class org.apache.derby.exe.acf81e0010x0123x6ee4x9161x000002d736180 is loaded, actually, I can manually load these classes before dynamic class. please reference my example: Class.forName("org.apache.derby.impl.sql.execute.GenericQualifier"); Class.forName("org.apache.derby.impl.sql.execute.GenericResultSetFactory"); Class.forName("org.apache.derby.impl.sql.execute.BulkTableScanResultSet"); Class.forName("org.apache.derby.impl.sql.execute.HashScanResultSet"); Class.forName("org.apache.derby.impl.sql.execute.HashJoinResultSet"); Class.forName("org.apache.derby.impl.sql.execute.ProjectRestrictResultSet"); rs=stmt.executeQuery("SELECT ID FROM T_SYS_RS_PACKAGE_MASTER WHERE EXISTS (SELECT * FROM T_VC_MASTER MA WHERE MA.SUBCLASS_TABLE_NAME='T_SYS_RS_PACKAGE_MASTER' AND MA.SUBCLASS_TABLE_ID=T_SYS_RS_PACKAGE_MASTER.ID AND MA.NAME='" PackageName "')"); this code run well no fail.
        Hide
        LiuZhenKe added a comment -

        BTW, is it possible to setup some properties, just like CLASSPATH, to tell derby how and where to load the class

        Show
        LiuZhenKe added a comment - BTW, is it possible to setup some properties, just like CLASSPATH, to tell derby how and where to load the class
        Hide
        Francois Orsini added a comment -

        You can store application logic (e.g. JAR files) in a Derby database and then set derby.database.classpath (database property) to let Derby's class loader know that classes that could not be loaded from the user's classpath, can be loaded from specific stored JARs in the database.

        Note that the application logic would have to be part of a SQL Function, procedure or table function...

        More information at:
        http://db.apache.org/derby/docs/dev/devguide/devguide-single.html#cdevdeploy30736

        Show
        Francois Orsini added a comment - You can store application logic (e.g. JAR files) in a Derby database and then set derby.database.classpath (database property) to let Derby's class loader know that classes that could not be loaded from the user's classpath, can be loaded from specific stored JARs in the database. Note that the application logic would have to be part of a SQL Function, procedure or table function... More information at: http://db.apache.org/derby/docs/dev/devguide/devguide-single.html#cdevdeploy30736
        Hide
        LiuZhenKe added a comment -

        Thank you for your suggestion, let me try to do this.
        But I do confuse that the given fail-to-load class is the derby out-of-the-box class. one class in derby.jar call a dynamic class, then dynamic class call another class in derby.jar , the second time fail. If the issue is not caused by the derby verion conflit, it may be caused by the customized classloader.

        Show
        LiuZhenKe added a comment - Thank you for your suggestion, let me try to do this. But I do confuse that the given fail-to-load class is the derby out-of-the-box class. one class in derby.jar call a dynamic class, then dynamic class call another class in derby.jar , the second time fail. If the issue is not caused by the derby verion conflit, it may be caused by the customized classloader.
        Hide
        Francois Orsini added a comment -

        Storing application logic JAR files in the database is NOT going to help fix your issue which is more tied to Derby's internal generated classes not being fully loaded by the classloader. I did mention 'derby.database.classpath' as you were asking if Derby could load classes outside of the user's classpath.

        You might want to check your environment regarding the user classpath and make sure the Derby JARs for that specific version (10.5.3), are correctly referenced with no conflicts with JARs from another Derby version.

        Have you been able to run that query outside of the application server JVM context, such as a standalone Java program to see if it is loading / executing fine?

        You might want to re-download Derby 10.5.3 and put the JARs in another / separate directory and set the classpath to point to these and check if you're still seeing the issue - check if you have other derby.jar somewhere in your environment / FileSystem that could potentially lead to conflicts.

        Show
        Francois Orsini added a comment - Storing application logic JAR files in the database is NOT going to help fix your issue which is more tied to Derby's internal generated classes not being fully loaded by the classloader. I did mention 'derby.database.classpath' as you were asking if Derby could load classes outside of the user's classpath. You might want to check your environment regarding the user classpath and make sure the Derby JARs for that specific version (10.5.3), are correctly referenced with no conflicts with JARs from another Derby version. Have you been able to run that query outside of the application server JVM context, such as a standalone Java program to see if it is loading / executing fine? You might want to re-download Derby 10.5.3 and put the JARs in another / separate directory and set the classpath to point to these and check if you're still seeing the issue - check if you have other derby.jar somewhere in your environment / FileSystem that could potentially lead to conflicts.
        Kathey Marsden made changes -
        Field Original Value New Value
        Labels derby_triage10_5_2
        Hide
        Rick Hillegas added a comment -

        Closing this issue as "Wont' Fix" because there is not enough information to pursue the problem. There has been no activity on this issue for about a year and a half now. The issue can be re-opened if more information becomes available.

        Show
        Rick Hillegas added a comment - Closing this issue as "Wont' Fix" because there is not enough information to pursue the problem. There has been no activity on this issue for about a year and a half now. The issue can be re-opened if more information becomes available.
        Rick Hillegas made changes -
        Status Open [ 1 ] Closed [ 6 ]
        Resolution Won't Fix [ 2 ]
        Gavin made changes -
        Workflow jira [ 12474530 ] Default workflow, editable Closed status [ 12800981 ]

          People

          • Assignee:
            Unassigned
            Reporter:
            LiuZhenKe
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Time Tracking

              Estimated:
              Original Estimate - 336h
              336h
              Remaining:
              Remaining Estimate - 336h
              336h
              Logged:
              Time Spent - Not Specified
              Not Specified

                Development