2013-07-20 5 views
1

J'écris un programme qui doit connaître toutes les classes/jars dans son contexte. Par exemple, s'il s'exécute dans un environnement Maven, il doit connaître le chemin de tous les fichiers jars dépendants dans .m2 /. S'il s'exécute dans Tomcat, il doit connaître les pots au WEB-INF/lib/. Il devrait le faire automatiquement, sans aucune configuration. J'ai utilisé System.getProperty("java.class.path") mais cela ne fonctionne pas dans Tomcat.Java Classpath en contexte

+0

Si elle fonctionne dans Tomcat, Tomcat établira automatiquement le classpath. De même, si vous utilisez Maven, Maven le fait. Pourquoi votre application doit-elle faire elle-même? – Thilo

+0

Il doit appeler le compilateur java dans Runtime pour compiler le code java, qui sont également générés dans Runtime. Le compilateur java doit donc connaître les jars nécessaires (en contexte) pour compiler le code java. – lazyboy

Répondre

1

Je pense qu'une question similaire a déjà été posée. Vous devrez récupérer les JAR chargés à partir du SystemClassLoader.

((URLClassLoader) (Thread.currentThread().getContextClassLoader())).getURLs() 

Voir ce lien pour plus de détails.

How to get classpath from classloader?

+0

Cela fonctionne dans Tomcat, mais pas avec maven. – lazyboy

+0

Eh bien j'avais trouvé la solution: Trois _Contexts_ doivent être vérifiés: Le ClassLoader du système, le 'getContextClassLoader' et le dernier:' this.getClass(). GetClassLoader() '. Alors ça devrait marcher. – lazyboy