java.lang.NegativeArraySizeException

From: Michael Garwood (mgarwood_at_citistreetonline.com)
Date: 12/29/03


Date: 29 Dec 2003 07:55:01 -0800

I am receiving the following exception:

java.lang.NegativeArraySizeException
        at java.lang.reflect.Method.copy(Method.java:368)
        at java.lang.reflect.Constructor.getParameterTypes(Constructor.java:122)
        at java.lang.Class.getConstructor0(Class.java:1924)
        at java.lang.Class.newInstance0(Class.java:278)
        at java.lang.Class.newInstance(Class.java:261)
        at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:381)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:377)
        at sun.reflect.MethodAccessorGenerator.generateMethod(MethodAccessorGenerator.java:59)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:28)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at com.citistreet.tbo.nextgen.util.NativeLibInvoker.invoke(NativeLibInvoker.java:50)
        at com.citistreet.tbo.nextgen.util.mapping.CPtr.setShort(CPtr.java:455)
        at com.citistreet.tbo.nextgen.util.mapping.CMalloc.setShort(CMalloc.java:374)
        at com.citistreet.tbo.nextgen.util.mapping.CStructMapper.toCStruct(CStructMapper.java:295)
        at com.citistreet.tbo.nextgen.util.mapping.CStructMapper.toCStruct(CStructMapper.java:450)
        at com.citistreet.tbo.nextgen.pensions.StartupPenCalc.initCLayer(StartupPenCalc.java:541)
        at com.citistreet.tbo.nextgen.pensions.StartupPenCalc.main(StartupPenCalc.java:109)
        at com.citistreet.tbo.nextgen.pensions.PenCalcStartupListener.contextInitialized(PenCalcStartupListener.java:42)
        at weblogic.servlet.internal.WebAppServletContext$FireContextListenerAction.run(WebAppServletContext.java:6357)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:97)
        at weblogic.servlet.internal.WebAppServletContext.notifyCreated(WebAppServletContext.java:1648)
        at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:3115)
        at weblogic.servlet.internal.WebAppServletContext.setStarted(WebAppServletContext.java:5559)
        at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:853)
        at weblogic.j2ee.J2EEApplicationContainer.start(J2EEApplicationContainer.java:2012)
        at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2053)
        at weblogic.management.deploy.slave.SlaveDeployer$ComponentActivateTask.activateContainer(SlaveDeployer.java:2558)
        at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.doCommit(SlaveDeployer.java:2483)
        at weblogic.management.deploy.slave.SlaveDeployer$Task.commit(SlaveDeployer.java:2308)
        at weblogic.management.deploy.slave.SlaveDeployer$Task.checkAutoCommit(SlaveDeployer.java:2390)
        at weblogic.management.deploy.slave.SlaveDeployer$Task.prepare(SlaveDeployer.java:2302)
        at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.prepare(SlaveDeployer.java:2455)
        at weblogic.management.deploy.slave.SlaveDeployer.processPrepareTask(SlaveDeployer.java:829)
        at weblogic.management.deploy.slave.SlaveDeployer.prepareDelta(SlaveDeployer.java:538)
        at weblogic.management.deploy.slave.SlaveDeployer.prepareUpdate(SlaveDeployer.java:496)
        at weblogic.drs.internal.SlaveCallbackHandler$1.execute(SlaveCallbackHandler.java:25)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:178)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:151)

from the JDK method copy, which is a member of the
java.lang.reflect.Method class. The following code throws the
exception at the line 'Class[] out = new Class[l];':

    /*
     * Avoid clone()
     */
    static Class[] copy(Class[] in) {
        int l = in.length;
        if (l == 0)
            return in;
        Class[] out = new Class[l];
        for (int i = 0; i < l; i++)
            out[i] = in[i];
        return out;
    }

You will notice that 'l' is < 0. 'l' is set by interogating the
length member of 'in' array, how is this possible? The 'in' is
constructed internally in the JDK code. I have checked the length of
all arrays I am passing to the JDK code and they are all > 0.

Thanks,
Michael



Relevant Pages

  • Re: Arrays.sort??? How good it is
    ... insert it into the Array at a position where the Array is fully ... Is there any inbuilt routines for these work. ... People talked about Linked List and I get errors using JDK ... I am getting Compilation error "value needed" May be I need JDK 1.5 ...
    (comp.lang.java.programmer)
  • Arrays.sort??? How good it is
    ... Arrays.sort uses the fastest way to sort the array. ... And I only want to sort first ... People talked about Linked List and I get errors using JDK ...
    (comp.lang.java.programmer)
  • Re: Arrays.sort??? How good it is
    ... What I want is when Array cars is Sorted the other Array carname is ... I am getting Compilation error "value needed" May be I need JDK 1.5 ... Generics were introduced in Java 5. ...
    (comp.lang.java.programmer)
  • Re: Seltsames Verhalten bei Array Instanziierung
    ... hinaus geht erzeugt einfach ein Array der Länge 0?! ... JDK 1.6 b82) einen OOME. ... hat Thomas ja auch nur für das System.out.printlnverwendet. ...
    (de.comp.lang.java)