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

Rick Hillegas commented on DERBY-4142:
--------------------------------------

I have had good success decompiling the generated code by using the free Jode 
decompiler. I find that Jode succeeds where most decompilers fail. In addition, 
I have found that the decompiled code is easy to read and can be compiled into 
byte code again. Not all decompilers produce compilable code. Here is the 
script which I use to drive Jode:

#! /bin/bash
#
# Run the jode decompiler on a class. E.g.:
#
#  runjode acf81e0010x011cxddd8xfcabx0000000feab00

classStub=$1

. setupClasspath

export CLASSPATH=$CLASSPATH:$SW/javaDecompilers/jode/jode-1.1.2-pre1.jar:.

echo $CLASSPATH

mkdir org
mkdir org/apache
mkdir org/apache/derby
mkdir org/apache/derby/exe

cp $classStub.class org/apache/derby/exe/


#java -cp $CLASSPATH jode.decompiler.Main --help $*
java -cp $CLASSPATH jode.decompiler.Main org.apache.derby.exe.$classStub


> java.lang.VerifyError causing java.sql.SQLException: Cannot create an 
> instance of generated class ... in lang.GeneratedColumnsTest and 
> GeneratedColumnsPermsTest  on IBM iseries
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4142
>                 URL: https://issues.apache.org/jira/browse/DERBY-4142
>             Project: Derby
>          Issue Type: Bug
>    Affects Versions: 10.5.1.0
>         Environment: IBM iseries (AS 400) with ibm 1.5 (build 1.5.0_13-b05)
>            Reporter: Myrna van Lunteren
>
> This results in 22 errors.
> Here's the stack trace with an insane build:
> 1) 
> test_005_basicInsert(org.apache.derbyTesting.functionTests.tests.lang.GeneratedColumnsTest)java.sql.SQLException:
>  Cannot create an instance of generated class 
> org.apache.derby.exe.acd83d18d1x0120x62bdx2dffxffffb19003081.
>       at java.lang.Throwable.<init>(Throwable.java:196)
>       at java.lang.Exception.<init>(Exception.java:41)
>       at java.sql.SQLException.<init>(SQLException.java:40)
>       at org.apache.derby.impl.jdbc.EmbedSQLException.<init>(Unknown Source)
>       at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
>       at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
>       at org.apache.derby.impl.jdbc.Util.seeNextException(Unknown Source)
>       at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(Unknown 
> Source)
>       at org.apache.derby.jdbc.Driver30.newEmbedPreparedStatement(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown 
> Source)
>       at 
> org.apache.derbyTesting.functionTests.tests.lang.GeneratedColumnsHelper.chattyPrepare(GeneratedColumnsHelper.java:147)
>       at 
> org.apache.derbyTesting.functionTests.tests.lang.GeneratedColumnsHelper.goodStatement(GeneratedColumnsHelper.java:125)
>       at 
> org.apache.derbyTesting.functionTests.tests.lang.GeneratedColumnsTest.test_005_basicInsert(GeneratedColumnsTest.java:427)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at 
> org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:105)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at 
> org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
>       at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
> Caused by: java.sql.SQLException: Java exception: 
> 'org/apache/derby/exe/acd83d18d1x0120x62bdx2dffxffffb19003081 0000 0000 : 
> java.lang.VerifyError'.
>       at java.lang.Throwable.<init>(Throwable.java:196)
>       at java.lang.Exception.<init>(Exception.java:41)
>       at java.sql.SQLException.<init>(SQLException.java:40)
>       at org.apache.derby.impl.jdbc.EmbedSQLException.<init>(Unknown Source)
>       at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
>       at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
>       at org.apache.derby.impl.jdbc.Util.javaException(Unknown Source)
>       at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown 
> Source)
>       ... 43 more
> Caused by: java.lang.VerifyError: 
> org/apache/derby/exe/acd83d18d1x0120x62bdx2dffxffffb19003081 0000 0000 
>       at java.lang.Throwable.<init>(Throwable.java:196)
>       at java.lang.Error.<init>(Error.java:49)
>       at java.lang.VerifyError.<init>(VerifyError.java:34)
>       at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>       at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
>       at 
> org.apache.derby.iapi.services.loader.ClassInfo.getNewInstance(Unknown Source)
>       at 
> org.apache.derby.impl.services.reflect.LoadedGeneratedClass.newInstance(Unknown
>  Source)
>       at 
> org.apache.derby.impl.services.reflect.ReflectGeneratedClass.newInstance(Unknown
>  Source)
>       at org.apache.derby.impl.sql.GenericActivationHolder.<init>(Unknown 
> Source)
>       at 
> org.apache.derby.impl.sql.GenericPreparedStatement.getActivation(Unknown 
> Source)
>       ... 39 more

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

Reply via email to