¤½¤â¤½¤â³ÈÄ¥¥Ý¥¤¥ó¥È¤Ã¤Æ †Eclipse¤Î¥×¥é¥°¥¤¥óºîÀ®¤ò¤¹¤ë¤È¤¤Ï¡¢¤¹¤Ç¤ËÍ¿¤¨¤é¤ì¤¿³ÈÄ¥¥Ý¥¤¥ó¥È¤ÎÄêµÁ¤Ë½¾¤Ã¤Æplugin.xml¤ËÆâÍÆ¤òµ½Ò¤·¤Æ¤¤¤¤Þ¤¹¡£¤½¤¦¤·¤Æ¤ª¤¯¤È¡¢Eclipse¦¤¬¤½¤ÎÆâÍÆ¤Ë½¾¤Ã¤Æ¥¯¥é¥¹¤ò¥í¡¼¥É¤·¤Þ¤¹¡£¤Ä¤Þ¤êplugin.xml¤ËÆâÍÆ¤òµ½Ò(= Eclipse¤Ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤òÅÐÏ¿)¤·¤Æ¤ª¤¯¤ÈEclipse¤¬É¬Íפ˱þ¤¸¤Æ¥í¡¼¥Ç¥£¥ó¥°¤·¤Æ¤¯¤ì¤ë¡¢¤È¤¤¤¦Observer¥Ñ¥¿¥ó¤Î¤è¤¦¤Ê¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Ë¤Ê¤Ã¤Æ¤ë¤ï¤±¤Ç¤¹¡£ ¥Ó¥å¡¼¤òºî¤ë¤È¤¤Ïorg.eclipse.ui.views¤ò»È¤¤¤Ê¤¬¤é¡¢¤µ¤é¤Ëorg.eclipse.ui.IViewPart?¤ò¼ÂÁõ¤¹¤ë¤È¤¤¤¦½ÅÊ£´¶¤Ë¤Ê¤Ë¤«°ãÏ´¶¤ò»ý¤Ã¤Æ¤¤¤¿¤ó¤Ç¤¹¤¬¡¢²¿¤È¤Ê¤¯¤¹¤Ã¤¤ê¤·¤Þ¤·¤¿¡£Eclipse¦¤Ç¤Ïorg.eclipse.ui.views¤È¤¤¤¦²Õ½ê¤ËÅÐÏ¿¤·¤¿¥â¥Î¤Ï¡¢org.eclipse.ui.IViewPart?¤Ç¥¯¥é¥¹¤ò¥¤¥ó¥¹¥¿¥ó¥¹²½¤¹¤ë¡¢¤È¤¤¤¦¥ë¡¼¥ë¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤ï¤±¤Ç¤¹¤Í¡£ ¤µ¤Æ¡¢Eclipse¤Ë¤Ï´û¸¤Î²Õ½ê(³ÈÄ¥¥Ý¥¤¥ó¥È)¤ËÅÐÏ¿¤¹¤ë¦¤Ç¤Ï¤Ê¤¯¡¢ÅÐÏ¿¤µ¤ì¤ë¦¤ÎΩ¾ì¤Ë¤Ê¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤Ä¤Þ¤ê¿·¤·¤¤³ÈÄ¥¥Ý¥¤¥ó¥È¤òÄêµÁ¤·¤Æ¡¢¤½¤ÎÄêµÁ¤Ë½¾¤Ã¤Æ·è¤Þ¤Ã¤¿½èÍý¤ò¤µ¤»¤ë¤è¤¦¤Ê¤³¤È¤¬¤Ç¤¤ë¤ï¤±¤Ç¤¹¡£¤¿¤È¤¨¤ÐLog4j¤ÎÀßÄê¥Õ¥¡¥¤¥ë¤ò»ØÄꤹ¤ë³ÈÄ¥¥Ý¥¤¥ó¥È¤òÄêµÁ¤·¤Æ¤ª¤¤¤Æ¡¢¥æ¡¼¥¶¤¬¤½¤Î³ÈÄ¥¥Ý¥¤¥ó¥È¤Ë¥Õ¥¡¥¤¥ë̾¤òÅÐÏ¿¤¹¤ë¤È¡¢¤½¤ÎÀßÄê¥Õ¥¡¥¤¥ë¤ÇLog4j¤Î½é´ü²½¤ò¹Ô¤Ã¤Æ¤¯¤ì¤ë¡¢¤Ê¤ó¤Æ»ÅÁȤߤ¬¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¤³¤ó¤Ê´¶¤¸¤Ç¤¹¡£ <extension point="nu.mine.kino.log4j.log4jConfig"> <log4jConfig filename="lib/log4j.xml"/> </extension> ¤È½ñ¤¤¤Æ¤ª¤¯¤È DOMConfigurator.configure(new File([Plugin_Directory],"lib/log4j.xml")); ¤ò¾¡¼ê¤Ë¤ä¤Ã¤Æ¤¯¤ì¤ë¡¢¤Ê¤ó¤Æ»ö¤ò¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ ¤³¤ì¤Ïorg.eclipse.ui.views¤ËÆâÍÆ¤ò¤ò½ñ¤¤¤Æ¤ª¤¯¤ÈIViewPart?·¿¤Ç¥¯¥é¥¹¤ò¥í¡¼¥É¤·¤ÆÉÁ²è¤·¤Æ¤¯¤ì¤ë¡¢¤ÈƱ¤¸»ÅÁȤߤǤ¹¤Í¡£ ¼ÂºÝ¤Ë¤ä¤Ã¤Æ¤ß¤ë †¤µ¤Æ¡¢¼ÂºÝ¤Ë¼«Ê¬¤Ç³ÈÄ¥¥Ý¥¤¥ó¥È¤òºîÀ®¤¹¤ë¤Ë¤Ï
¤Þ¤º³ÈÄ¥¥Ý¥¤¥ó¥È¤ò¿·µ¬¤Ëºî¤ë¤Ë¤Ï¡¢extension-point¥¿¥°¤ò»È¤¤¤Þ¤¹¡£ plugin.xml(È´¿è) †<plugin
id="nu.mine.kino.log4j"
.........
</requires>
¢ ³ÈÄ¥¥Ý¥¤¥ó¥È¤ÎºîÀ®
<extension-point id="log4jConfig" name="Log4j"
schema="schema/log4jConfig.exsd"/>
¢ ºî¤Ã¤¿³ÈÄ¥¥Ý¥¤¥ó¥È¤ËÅÐÏ¿
<extension
point="nu.mine.kino.log4j.log4jConfig">
<log4jConfig filename="lib/log4j.xml"/>
</extension>
</plugin>
¼ÂºÝ¤ËÄêµÁ¤·¤Æ¤¤¤ë²Õ½ê¤Ï <extension-point id="log4jConfig" name="Log4j"
schema="schema/log4jConfig.exsd"/>
¤Ç¤¹¤¬¡¢¤³¤ì¤ÇÄêµÁ¤·¤¿³ÈÄ¥¥Ý¥¤¥ó¥ÈID¤Ïnu.mine.kino.log4j.log4jConfig¤Ç¡¢¥¹¥¡¼¥Þ(µ½ÒÊýË¡)¤Ïschema/log4jConfig.exsd¤Ç¤¹¤è¡¢¤È¤¤¤¦°ÕÌ£¤Ë¤Ê¤ê¤Þ¤¹¡£¾ÜºÙ¤Ï¾Ê¤¤Þ¤¹¤¬schema/log4jConfig.exsd¤Ë¤Ï¡¢log4jConfig¥¿¥°¤Ë¤Ïfilename°À¤¬¤¢¤ê¤Þ¤¹¤è¡¢¤È¤¤¤Ã¤¿ÆâÍÆ¤¬µ½Ò¤·¤Æ¤¢¤ê¤Þ¤¹¡£ ³ÈÄ¥¥Ý¥¤¥ó¥È¤ÎÄêµÁ¤Ï°Ê¾å¤Ç¤¹¡£¼¡¤ËÅÐÏ¿¤µ¤ì¤¿¾ðÊó(¤³¤³¤Ç¤Ïfilename°À¤ÎÃÍ)¤ò¸µ¤Ë²ÔƯ¤¹¤ë½èÍýÉôʬ¤ò½ñ¤¤¤Æ¤¤¤¤Þ¤¹¡£½èÍý¤ò½ñ¤¯¾ì½ê¤Ï¡¢¥×¥é¥°¥¤¥ó¥¯¥é¥¹¤Î public void start(BundleContext context); ¤Ë¤·¤Þ¤·¤¿*1¡£ ¼ÂºÝ¤Î½èÍý¤òµ½Ò¤¹¤ë †¼ÂºÝ¤Î½èÍý¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤·¤Æ¤ß¤Þ¤·¤¿¡£ public void start(BundleContext context) throws Exception {
super.start(context);
// ¥×¥é¥°¥¤¥ó¤Î¥ì¥¸¥¹¥È¥ê¤ò¼èÆÀ
IPluginRegistry registry = Platform.getPluginRegistry();
// ¥ì¥¸¥¹¥È¥ê¤«¤é³ÈÄ¥¥Ý¥¤¥ó¥È¤òID¤ò»È¤Ã¤Æ¼èÆÀ
IExtensionPoint point = registry
.getExtensionPoint("nu.mine.kino.log4j.log4jConfig");
// ³ÈÄ¥¥Ý¥¤¥ó¥È¤ò¤Ä¤«¤Ã¤Æ¡¢³ÈÄ¥¥¯¥é¥¹(¤ÎÇÛÎó)¤ò¼èÆÀ
IExtension[] extensions = point.getExtensions();
// ¢¬ ¤³¤ì¤Ï¤³¤Î¥×¥é¥°¥¤¥ó¤Îµ½Ò¤À¤±¤Ç¤Ê¤¯¡¢
// ¾¤Î¥×¥é¥°¥¤¥ó¤¬½ñ¤¤¤Æ¤¯¤ì¤¿ nu.mine.kino.log4j.log4jConfig
// ³ÈÄ¥¥Ý¥¤¥ó¥È¤â´Þ¤Þ¤ì¤Æ¤¤¤ë¡£
for (int i = 0; i < extensions.length; i++) {
// ¢¤³¤Î¤Ê¤«¤Ç¤½¤ì¤¾¤ì¤Î¥¯¥é¥¹¥í¡¼¥À¤ò¼èÆÀ¤·¡¢¤½¤ì¤¾¤ì¤Î¥¯¥é¥¹¥í¡¼¥À¾å¤Ç
// Log4j¤ò½é´ü²½¤·¤Æ¤¤¤ë¡£
loadExtension(extensions[i]);
}
}
Ĺ¡¹¤È¤ä¤Ã¤Æ¡¢¤è¤¦¤ä¤¯ IExtension[] extensions = point.getExtensions(); ¤ÈIExtension¤ÎÇÛÎ󤬼èÆÀ¤Ç¤¤Þ¤·¤¿¡£IExtension¤Ï¤¤¤í¤¤¤í¤Ê¤È¤³¤í¤Îplugin.xml¤¬½ñ¤¤¤Æ¤¯¤ì¤¿¡¢nu.mine.kino.log4j.log4jConfig ³ÈÄ¥¥Ý¥¤¥ó¥È¤ÎÃͤ˥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Î¥á¥½¥Ã¥É¤¬¤¢¤ê¤Þ¤¹¡£Â³¤¤ÎloadExtension(extensions[i])¤Ï¤½¤Î°ì¤Ä°ì¤Ä¤Î <extension point="nu.mine.kino.log4j.log4jConfig"> ¤ËÂФ¹¤ë½èÍý¤òµ½Ò¤·¤Þ¤·¤¿¡£ extension point¥¿¥°¤´¤È¤Î½èÍý †Á°½ÒÄ̤ꤢ¤È¤Ï <extension point="nu.mine.kino.log4j.log4jConfig"> <log4jConfig filename="lib/log4j.xml"/> </extension> ¤ËÂФ¹¤ë½èÍý¤ò½ñ¤±¤Ð½ª¤ï¤ê¤Ç¤¹¡£ TIPS †¤¿¤È¤¨¤Ð³ÈÄ¥¥Ý¥¤¥ó¥È¤ØÅÐÏ¿¤ò <extension
point="kino.plugin.samples.dictionary">
<dictionary name="stock.dat"/>
<dictionary name="stock2.dat"/>
</extension>
<extension
point="kino.plugin.samples.dictionary">
<dictionary name="stock3.dat"/>
</extension>
¤È½ñ¤¯¤³¤È¤¬¤Ç¤¤ë¤È¤¡¢ IPluginRegistry registry = Platform.getPluginRegistry();
IExtensionPoint point = registry.getExtensionPoint("kino.plugin.samples.dictionary");
IExtension[] extensions = point.getExtensions();
<-¤³¤³¤Ç¤¹¤Ç¤Ë¾¤Î¥×¥é¥°¥¤¥ó¤Îʬ¤â´ªÄꤵ¤ì¤Æ¤ë¡£
// ¤³¤Îfor¤Ï extension¥¿¥° ¤Î·«¤êÊÖ¤·
for (int i = 0; i < extensions.length; i++) {
IConfigurationElement[] elements = extensions[i]
.getConfigurationElements();
// ¤³¤Îfor¤Ï dictionary ¤Î·«¤êÊÖ¤·
for (int j = 0; j < elements.length; j++) {
System.out.println(elements[j].getAttribute("name"));
}
}
¤³¤Îµ»ö¤Ï
¸½ºß¤Î¥¢¥¯¥»¥¹:8888 |