java.lang.IllegalAccessError when class is package private
807591Apr 14 2008 — edited Apr 14 2008Hi all,
I'm not sure how to describe the problem I have. Basically I have a class ReferenceTypeArray that I prefer to be package private. If I define it like that my code compiles, and my large collection of junit tests runs witjout any problems. That's when I execute them from within eclipse (Run as junit test...).
If I instead run the junit tests from Ant outside of eclipse I get this error:
<error type="java.lang.reflect.InvocationTargetException">
java.lang.reflect.InvocationTargetException
at org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:423)
at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:137)
Caused by: java.lang.IllegalAccessError: tried to access class org.ojalgo.array.ReferenceTypeArray from class org.ojalgo.matrix.store.BigDenseStore
at org.ojalgo.matrix.store.BigDenseStore.access$16(BigDenseStore.java:1)
at org.ojalgo.matrix.store.BigDenseStore$1.makeStoreCopy(BigDenseStore.java:198)
at org.ojalgo.matrix.store.BigDenseStore$1.makeStoreCopy(BigDenseStore.java:1)
at org.ojalgo.matrix.store.LogicalStore.toPhysicalStore(LogicalStore.java:169)
at org.ojalgo.matrix.BigMatrix.toBigStore(BigMatrix.java:120)
at org.ojalgo.matrix.BigMatrix.makeStore(BigMatrix.java:164)
at org.ojalgo.matrix.ArbitraryMatrix.multiplyRight(ArbitraryMatrix.java:331)
at performance.PerformanceData.<clinit>(PerformanceData.java:59)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at performance.PackageComparisons.suite(PackageComparisons.java:41)
at org.ojalgo.AllComparisons.suite(AllComparisons.java:39)
</error>
Why do I get this error?
If I build an application and deploy that to Tomcat I get the same problem. The problem is easy to fix/remove - I just make ReferenceTypeArray public.
I'd like to know why I cannot define ReferenceTypeArray as package private even when the compiler thinks it ok.
/Anders
Edited by: apete on Apr 14, 2008 2:58 AM
Edited by: apete on Apr 14, 2008 3:00 AM