Как создать pluginable программу Java?

Используйте setNames() вокруг data.frame

setNames(data.frame(matrix(c(1,2,3,4),nrow=2,ncol=2)), c("a","b"))
#  a b
#1 1 3
#2 2 4

?setNames:

функцию удобства, которая устанавливает имена для объекта и возвращает объект

> setNames
function (object = nm, nm) 
{
    names(object) <- nm
    object
}
37
задан Kev 19 November 2011 в 01:16
поделиться

6 ответов

Я сделал это для программного обеспечения, которое я записал в прошлом, что это очень удобно. Я сделал это первым созданием Интерфейса, который должны были реализовать все мои 'сменные' классы. Я тогда использовал ClassLoder Java , чтобы загрузить те классы и создать экземпляры их.

Один путь, которым можно пойти об этом, является этим:

File dir = new File("put path to classes you want to load here");
URL loadPath = dir.toURI().toURL();
URL[] classUrl = new URL[]{loadPath};

ClassLoader cl = new URLClassLoader(classUrl);

Class loadedClass = cl.loadClass("classname"); // must be in package.class name format

, Который загрузил класс, теперь необходимо создать экземпляр его, брать имя интерфейса является MyModule:

MyModule modInstance = (MyModule)loadedClass.newInstance();
46
ответ дан Afshin Moazami 27 November 2019 в 04:22
поделиться

Изучите OSGi.

С одной стороны, OSGi обеспечивает все виды инфраструктуры для управления, запуска и выполнения большого количества других вещей с модульными компонентами программного обеспечения. С другой стороны, это могло меня слишком тяжелый для Ваших потребностей.

Кстати, Eclipse использует OSGi для управления его плагинами.

18
ответ дан David Koelle 27 November 2019 в 04:22
поделиться

Я рекомендую внимательно изучить Поставщик услуг Java (SPI) API . Это обеспечивает простую систему для нахождения, что все классы всего Раздражают путь к классу, которые представляют себя как реализация конкретного сервиса. Я использовал его в прошлом со сменными системами с большим успехом.

15
ответ дан Afshin Moazami 27 November 2019 в 04:22
поделиться

Хотя я буду второй принятое решение, если основная сменная поддержка будет необходима (который имеет место большую часть времени), существует также Платформа Плагина Java (JPF), который, хотя испытывая недостаток в необходимой документации, является очень аккуратной сменной реализацией платформы.

Это легко развертываемо и - при проходе через classloading idiosynchrasies - очень легкий разработать с. Комментарий к вышеупомянутому должен знать, что плагин loadpaths ниже сменного каталога нужно назвать в честь полным путь к классу в дополнение к развертыванию его файлов класса в нормальном пути пакета, названном путем. Например,

plugins
`-com.my.package.plugins
  `-com
    `-my
      `-package
        `-plugins
          |- Class1.class
          `- Class2.class
6
ответ дан Steen 27 November 2019 в 04:22
поделиться

При подходе classloader собственной разработки: В то время как определенно хороший способ узнать о classloaders существует что-то позвонившее "classloader ад", главным образом известный людям, которые боролись с ним когда дело доходит до использования в больших проектах. Конфликтующие классы легко представить и трудно решить.

И существует серьезное основание, почему затмение сделало перемещение к годы несколько OSGI назад. Так, если его больше тогда любимый проект, бросьте серьезный взгляд в OSGi. Который стоит посмотреть на. Вы узнаете о classloaders ПЛЮС появление technolgy стандарт.

4
ответ дан Sanjiv 27 November 2019 в 04:22
поделиться

Вы рассмотрели здание сверху Платформы Толстого клиента Eclipse и затем представление платформы расширения Eclipse?

кроме того, в зависимости от Ваших потребностей, Платформа Spring могла бы помочь с этим и другими вещами, которые Вы могли бы хотеть сделать: http://www.springframework.org/

1
ответ дан John with waffle 27 November 2019 в 04:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: