java.lang.VirtualMachineError: Illegal CONSTANT_Class reference

Discussion in 'Java' started by Alex Hunsley, May 25, 2006.

  1. Alex Hunsley

    Alex Hunsley Guest

    Going slightly nutso here...
    I'm working on a MIDP Java project. It compiles fine, but at runtime I
    get the following:

    java.lang.VirtualMachineError: Illegal CONSTANT_Class reference

    This happens when I assign a newly instantiated object to a private
    class member. I've googled for this error, and found a few scant
    references to it, but couldn't glean much about it.

    If I use Antenna with ant to build the project it doesn't seem to have
    this problem (not entirely surprisingly).
    Does this ring any bells with anyone?

    The nitty gritty details:
    Using EclipseME plugin in Eclipse 3.1.2 with the Sun Wireless Toolkit 2.2.
    (Project settings: compiler compliance level 1.4, .class file
    compatabillity set to 1.1, source compatability is 1.3.)

    Alex Hunsley, May 25, 2006
    1. Advertisements

  2. Alex Hunsley

    Oliver Wong Guest

    The Javadocs say: "VirtualMachineError: Thrown to indicate that the Java
    Virtual Machine is broken or has run out of resources necessary for it to
    continue operating."

    Could it be that you've found a bug in the JVM you're using?

    - Oliver
    Oliver Wong, May 25, 2006
    1. Advertisements

  3. Alex Hunsley

    Alex Hunsley Guest

    Maybe! It's definitely very odd seeming.
    I've just reduced the error down to the follow behaviour:
    I've declared a class:

    class RandomClass {
    public RandomClass(int a) {


    Then, from just before the point of failure in my code, I've added a
    call to this class:

    RandomClass rc = new RandomClass(1);
    aMethodCallThatIsUsuallyThePointOfFailure(.. stuff ..);

    The code above executes the instantiation of rc ok and dies at the
    second line.
    If, however, I add another parameter to RandomClass constructor and pass
    that in:

    RandomClass rc = new RandomClass(1, 2);
    aMethodCallThatIsUsuallyThePointOfFailure(.. stuff ..);

    ... it now dies horribly on the "new RandomClass(1, 2)" line. Seems the
    stack is getting corrupted or overflowed and the point at which the
    program dies is merely a symptom of the real resource/corruption problem!
    Thing is, this was all working fine until I did a tiny bit of harmless
    seeming refactoring (I moved a class). Hmmm...

    thanks for your reply!
    Alex Hunsley, May 25, 2006
  4. Alex Hunsley

    Sep 30, 2006
    Likes Received:
    Hi Alex Hunsley,

    Can you please tell me how you resolved your problem?
    I am having the same problem in the same environment.

    Thanks for any help.
    , Sep 30, 2006
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.