Классовые пути и размышления - PullRequest
0 голосов
/ 13 августа 2010

В проекте, который интенсивно использует отражение для выбора классов на основе среды, есть ли способ определить, какие библиотеки включить в сборку? В настоящее время вынуть библиотеку из проекта - это азартная игра, но придерживаться текущего плана «включай все, это единственный способ быть уверенным» делает все это раздутым и громоздким.

Ответы [ 2 ]

1 голос
/ 13 августа 2010

К сожалению, нет, так как это было бы трудно для классов, загружаемых динамически, особенно с использованием фабрик, где имя класса передается как Strings.

Если ваш jvm поддерживает опции -Xcomp and -Xbatch вместе с -XX:CompileThreshold, вы можете использовать его в своей среде разработки и тестирования. Хотя это увеличит время запуска.

Эти опции просто упростят вашу работу, но вам, вероятно, все равно придется тщательно вас проверить.

1 голос
/ 13 августа 2010

Вы можете использовать JavaAssist lib для включения новых путей к классам или изменения классов во время выполнения.

Вот краткое руководство

Вы можете зарегистрировать имя каталога в качестве пути поиска класса. Например, следующий код добавляет каталог / usr / local / javalib в путь поиска:

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

Путь поиска, который могут добавить пользователи, - это не только каталог, но и URL:

  ClassPool pool = ClassPool.getDefault();
  ClassPath cp = new URLClassPath("www.javassist.org", 80, "/java/", "org.javassist.");
  pool.insertClassPath(cp);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...