2013-07-20 2 views
1

Я пишу программу, которая должна знать все классы/банки в своем контексте. Например, если он работает в среде Maven, он должен знать путь ко всем зависимым баночкам в .m2 /. Если он работает в Tomcat, он должен знать банки в WEB-INF/lib/. Он должен делать это автоматически, без какой-либо конфигурации. Я использовал System.getProperty("java.class.path"), но он не работает в Tomcat.Java Classpath в контексте

+0

Если он работает в Tomcat, Tomcat автоматически настроить путь к классам. Точно так же, если вы пройдете через Maven, Maven это сделает. Почему ваше приложение должно делать сам? – Thilo

+0

Он должен вызывать java-компилятор в Runtime для компиляции Java-кода, который также генерируется в Runtime. Поэтому компилятор java должен знать необходимые банки (в контексте) для компиляции java-кода. – lazyboy

ответ

1

Я думаю, что аналогичный вопрос был задан раньше. Вам нужно будет загрузить JAR-файлы из SystemClassLoader.

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

Дополнительную информацию см. На этой ссылке.

How to get classpath from classloader?

+0

Он работает в Tomcat, но не с maven. – lazyboy

+0

Ну, я нашел решение: нужно проверить три _Contexts_: ClassLoader системы, 'getContextClassLoader' и последний:' this.getClass(). GetClassLoader() '. Тогда это должно сработать. – lazyboy