Jérôme Leroux created BCEL-191:
----------------------------------

             Summary: Verifier assumes the classes of the verifier are in the 
classpath of the verified class
                 Key: BCEL-191
                 URL: https://issues.apache.org/jira/browse/BCEL-191
             Project: Commons BCEL
          Issue Type: Bug
          Components: Verifier
            Reporter: Jérôme Leroux
            Priority: Minor


When verifying a class, the verifier looks for this class and its dependencies 
in a classpath configured for this verification. If the classes of the verifier 
itself are not in this classpath, then an error can occur.
The causes is the use of the internal class 
{{org.apache.bcel.verifier.structurals.GenericArray}} to mock the array class 
when a method invokation is done on an array. If the class {{GenericArray}} is 
not available in the classpath of the verifier class, we get the following 
error:
{quote}
Exception in thread "main" 
org.apache.bcel.verifier.exc.AssertionViolatedException: INTERNAL ERROR: Some 
RuntimeException occured while verify()ing class 
'org.apache.bcel.verifier.tests.TestArray01', method 'public static void 
test1()'. Original RuntimeException's stack trace:
---
org.apache.bcel.verifier.exc.AssertionViolatedException: INTERNAL ERROR: 
Missing class: java.lang.ClassNotFoundException: Exception while looking for 
class org.apache.bcel.verifier.structurals.GenericArray: java.io.IOException: 
Couldn't find: org/apache/bcel/verifier/structurals/GenericArray.class
        at 
org.apache.bcel.verifier.structurals.InstConstraintVisitor.visitINVOKEVIRTUAL(InstConstraintVisitor.java:2059)
        …
{quote}

Here is a simple example of code that raises this exception:
{code:java}
    public static void test1(){
        String[] a = new String[4];
        a.equals(null);
    }
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to