2010-08-13 3 views
0

Dans un projet qui utilise intensément la réflexion pour sélectionner des classes en fonction de l'environnement, existe-t-il un moyen de déterminer quelles bibliothèques inclure dans la construction? En ce moment, sortir une bibliothèque du projet est un pari, mais s'en tenir au plan actuel de «tout inclure, c'est la seule façon d'être sûr» rend le tout gonflé et lourd.Classpaths and reflection

+0

Aussi, vérifiez cette question: http://stackoverflow.com/questions/3369791/java-vm-tuning-xbatch-and-xcomp – naikus

Répondre

1

Malheureusement il n'y en a pas car cela serait difficile pour les classes chargées dynamiquement, en particulier en utilisant des usines où le nom de classe est passé en Strings. Si vous prenez en charge les options -Xcomp and -Xbatch et -XX:CompileThreshold, vous pouvez l'utiliser dans votre environnement de développement et de test. Cela va augmenter votre temps de démarrage.

Ces options faciliteront simplement votre travail, mais vous devrez probablement encore vous tester à fond.

1

Vous pouvez utiliser JavaAssist lib pour inclure de nouveaux chemins de classe ou modifier des classes lors de l'exécution.

Here is a brief tutorial

Vous pouvez enregistrer un nom de répertoire que le chemin de recherche de classe. Par exemple, le code suivant ajoute un répertoire/usr/local/javalib sur le chemin de recherche:

ClassPool pool = ClassPool.getDefault(); 
    pool.insertClassPath("/usr/local/javalib"); 

Le chemin de recherche que les utilisateurs peuvent ajouter est non seulement un répertoire mais aussi une URL:

ClassPool pool = ClassPool.getDefault(); 
    ClassPath cp = new URLClassPath("www.javassist.org", 80, "/java/", "org.javassist."); 
    pool.insertClassPath(cp);