Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - java.lang.ClassLoader
Forum - Java - java.lang.ClassLoader

Avatar
Tronky (Normal User)
Newbie


Messaggi: 2
Iscritto: 12/12/2007

Segnala al moderatore
Postato alle 12:08
Mercoledì, 12/12/2007
Salve a tutti, vengo subito al sodo.
Ho un problema con java java.lang.ClassLoader.

Devo istanziare un A.class a runtime ed utilizzarlo all'interno di un programma P

P si trova nel package 'pck1'
A si trova nel package 'pck2'

Quando provo ad istanziare 'pck2.A' ottengo

java.lang.ClassNotFoundException: abcmanager.addon.controller.EntropyController
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.findSystemClass(ClassLoader.java:882)
        at classloader.CustomClassLoader.findClass(CustomClassLoader.java:51)
        at classloader.CustomClassLoader.loadClass(CustomClassLoader.java:40)
        at classloader.Main.main(Main.java:62)
Exception in thread "main" java.lang.NullPointerException
        at classloader.CustomClassLoader.findClass(CustomClassLoader.java:58)
        at classloader.CustomClassLoader.loadClass(CustomClassLoader.java:40)
        at classloader.Main.main(Main.java:62)
Java Result: 1

Invece se sposto A.class nel package pck1, funziona tutto perfettamente.
Ho provate anche a leggere dal jar che contiene il file A.class ma da sempre lo stesso problema.

Dove sbaglio?
Potrebbe essere un problema di permessi visto che

SecurityManager sm = new SecurityManager();      
System.setSecurityManager(sm);
FilePermission perm = new FilePermission("c:\\A.class", "read");
sm.checkPermission(perm);

solleva


Exception in thread "main" java.security.AccessControlException: access denied (java.io.FilePermission c:\EntropyABCController.jar read)
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
        at java.security.AccessController.checkPermission(AccessController.java:546)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
        at classloader.Main.main(Main.java:48)
Java Result: 1

Grazie mille




PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 21:58
Venerdì, 14/12/2007
se il problema sono proprio i permessi potresti provare a controllare i policy file

http://www.pierotofy.it/pages/guide_tutorials/Java/Sicurez ...

ma sei in un'applicazione standalone? perchè quelle girano senza SecurityManager attivati di default e quindi non dovrebbe esserci la JVM che ti blocca come fa per le applet non firmate.

PM Quote
Avatar
Tronky (Normal User)
Newbie


Messaggi: 2
Iscritto: 12/12/2007

Segnala al moderatore
Postato alle 13:48
Sabato, 15/12/2007
Salve netarrow.
Ho risolto il problema. Non e' un problema di permessi. In pratica non riuscivo a troavare i file class da caricare. Utilizzando invece java.net.URLClassLoader e' molto piu' semplice localizzare i file. Il costruttore di tale classe accetta il path verso una directory oppure verso un jar file.

Grazie per l'aiuto.

PM Quote