You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "LiuZhenKe (JIRA)" <ji...@apache.org> on 2009/09/01 03:49:32 UTC

[jira] Commented: (DERBY-4364) Cannot create an instance of generated class org.apache.derby.exe.acf81e0010x0123x6e25x38c2x00000616b5f80.

    [ https://issues.apache.org/jira/browse/DERBY-4364?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12749729#action_12749729 ] 

LiuZhenKe commented on DERBY-4364:
----------------------------------

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. 

> Cannot create an instance of generated class org.apache.derby.exe.acf81e0010x0123x6e25x38c2x00000616b5f80.
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4364
>                 URL: https://issues.apache.org/jira/browse/DERBY-4364
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>    Affects Versions: 10.5.3.0
>         Environment: The program run well in my local machine's tomcat server. but when I deployed into http://www.jhost.cn/, it failed. the env in jhost are:
> Apache/2.2.11 mod_jk/1.2.25  
> Tomcat Version 5.5.27  
> JVM Version 1.5.0_11-b03  
> PHP Version 5.2.8  
> MySQL Ver 14.12 Distrib 5.0.67  
> phpMyAdmin Version information: 3.1.1 
>            Reporter: LiuZhenKe
>            Priority: Critical
>   Original Estimate: 336h
>  Remaining Estimate: 336h
>
> 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

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.