Articles of classloader

Controllare se la class esiste nel percorso di class Java senza eseguire il suo inizializzatore statico?

Se io uso try { Class.forName(“my.package.Foo”); // it exists on the classpath } catch(ClassNotFoundException e) { // it does not exist on the classpath } il blocco di inizializzazione statico di “Foo” viene avviato. C’è un modo per determinare se una class “my.package.Foo” si trova sul classpath senza avviare l’inizializzatore statico?

Sicurezza Java: plug-in sandbox caricati tramite URLClassLoader

Sommario delle domande: Come modifico il codice qui sotto in modo che il codice non affidabile caricato dynamicmente funzioni in una sandbox di sicurezza mentre il resto dell’applicazione rimane libero? Perché URLClassLoader non lo gestisce semplicemente come dice? EDIT: aggiornato per rispondere ad Ani B. EDIT 2: Aggiunto PluginSecurityManager aggiornato. La mia applicazione ha un […]

Cosa carica il classloader del sistema java?

Sappiamo che possiamo sovrascrivere il classloader del sistema con: java -Djava.system.class.loader=com.test.MyClassLoader xxx Quindi, dal momento che com.test.MyClassLoader è di per sé una class, da chi viene caricata? Come otteniamo il file di class di questo classloader “meta”?

Flusso di caricamento della class per un programma semplice

Sto solo ora iniziando a imparare l’architettura interna di Java. Ho capito a grandi linee il concetto di caricamento di classi che carica le classi richieste quando jvm esecuzione, ClassNotFoundException viene lanciata quando una class non viene trovata e il caricatore di classi specifico carica le classi a cui fa riferimento la class. Qualcuno può […]

Java Class.forName () dalla directory remota

Attualmente sto caricando le classi Java usando Class.forName() per caricarlo. clazz = Class.forName(“interfaces.MyClass”); Ma ora voglio caricare classi da diverse directory, ho provato a impostare classpath per clazz = Class.forName(“-cp \”C:/dir\” distantinterfaces.DistantClass”); Senza successo e ClassNotFoundException . Il percorso completo per class distante è: C:/dir/distantinterfaces/DistantClass.class

Che cos’è un ClassLoader Java?

In poche semplici frasi, cos’è un ClassLoader Java, quando viene utilizzato e perché? OK, ho letto un articolo wiki. ClassLoader carica le classi. OK. Quindi, se includo i file jar e li importa, un ClassLoader fa il lavoro. Perché dovrei preoccuparmi di questo ClassLoader? Non l’ho mai usato e non sapevo che esistesse. La domanda […]

Sistema di sostituzione Classloader per le classi in barattoli contenenti barattoli

Finora, gli esempi che ho visto per ClassLoaders personalizzati coinvolgono la sottoclass di URLClassLoader e utilizzano quell’istanza specifica per caricare le classi nelle risorse. Ho cercato invano di cercare metodi alternativi per sostituire SystemClassLoader, in modo che il mio ClassLoader possa essere consultato per le classi che non si trovano nel classpath. Ho provato Thread.currentThread().setContextClassLoader […]

Come gestire LinkageErrors in Java?

Sviluppando un’applicazione Java fortemente basata su XML, recentemente ho riscontrato un problema interessante su Ubuntu Linux. La mia applicazione, che utilizza Java Plugin Framework , non è in grado di convertire un documento XML con dom4j in implementazione di Batik delle specifiche SVG. Sulla console, imparo che si verifica un errore: Eccezione nel thread “AWT-EventQueue-0” […]

Class.forName () vs ClassLoader.loadClass () – quale utilizzare per il caricamento dinamico?

Quando si carica dynamicmente una class, quando è opportuno utilizzarla Class.forName(“SomeClass”); e quando dovrei usare ClassLoader.getSystemClassLoader().loadClass(“SomeClass”); O sono due modi di fare la stessa cosa?

Java Enum: due tipi di enumerazione, ciascuno contenente riferimenti l’uno all’altro?

C’è un modo per aggirare i problemi di caricamento della class causati dall’avere due enumerazioni che fanno riferimento l’un l’altro? Ho due serie di enumerazioni, Foo e Bar, definite in questo modo: public class EnumTest { public enum Foo { A(Bar.Alpha), B(Bar.Delta), C(Bar.Alpha); private Foo(Bar b) { this.b = b; } public final Bar b; […]