Ich versuche eine Instanz einer Klasse zu erzeugen, deren Name erst zur Laufzeit bekannt ist.
Der Code sieht ungefähr so aus:
Das geht gut, solange die Klasse mit diesem Code und die Klasse ConfigXyz in demselben package sind. Sobald ConfigXyz in einem anderen package ist, wird eine IllegalAccessException in newInstance() geworfen:
java.lang.IllegalAccessException: Class TaskXyz can not access a member of class ConfigXyz with modifiers ""
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:57)
at java.lang.Class.newInstance0(Class.java:302)
at java.lang.Class.newInstance(Class.java:261)
...
Ich habe im Internet ein bisserl recherchiert und den Eindruck gewonnen, daß das ein Java-Problem ist,
aber so ganz zutreffend waren alle Beispiele die ich gefunden habe nicht.
JVM ist
java version "1.4.2.07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2.07-050121-15:53)
Java HotSpot(TM) Server VM (build 1.4.2 1.4.2.07-050121-17:30-PA_RISC2.0 PA2.0 (aCC_AP), mixed mode)
Weiss jemand einen workaround (ausser die Klassen wieder ins gleiche package zu verfrachten)?
Gruß
Thomas
Der Code sieht ungefähr so aus:
Code:
Class configClass = Class.forName( "ConfigXyz" );
configClass.newInstance();
Das geht gut, solange die Klasse mit diesem Code und die Klasse ConfigXyz in demselben package sind. Sobald ConfigXyz in einem anderen package ist, wird eine IllegalAccessException in newInstance() geworfen:
java.lang.IllegalAccessException: Class TaskXyz can not access a member of class ConfigXyz with modifiers ""
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:57)
at java.lang.Class.newInstance0(Class.java:302)
at java.lang.Class.newInstance(Class.java:261)
...
Ich habe im Internet ein bisserl recherchiert und den Eindruck gewonnen, daß das ein Java-Problem ist,
aber so ganz zutreffend waren alle Beispiele die ich gefunden habe nicht.
JVM ist
java version "1.4.2.07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2.07-050121-15:53)
Java HotSpot(TM) Server VM (build 1.4.2 1.4.2.07-050121-17:30-PA_RISC2.0 PA2.0 (aCC_AP), mixed mode)
Weiss jemand einen workaround (ausser die Klassen wieder ins gleiche package zu verfrachten)?
Gruß
Thomas