??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品丝袜一区二区三区,亚洲精品一区二区三区影院,天堂√在线观看一区二区 http://www.aygfsteel.com/chengang/category/8012.html 逝者如斯乎不舍昼夜 zh-cn Tue, 27 Feb 2007 14:42:16 GMT Tue, 27 Feb 2007 14:42:16 GMT 60 表格修改器实例BUG的解冟?/title> http://www.aygfsteel.com/chengang/archive/2006/12/12/87356.html陈刚 陈刚 Tue, 12 Dec 2006 14:22:00 GMT http://www.aygfsteel.com/chengang/archive/2006/12/12/87356.html http://www.aygfsteel.com/chengang/comments/87356.html http://www.aygfsteel.com/chengang/archive/2006/12/12/87356.html#Feedback 0 http://www.aygfsteel.com/chengang/comments/commentRss/87356.html http://www.aygfsteel.com/chengang/services/trackbacks/87356.html http://www.aygfsteel.com/Files/chengang/jface_tableviewer.rar ]]> SWT的状态栏和进度条的实?/title> http://www.aygfsteel.com/chengang/archive/2006/12/12/87353.html陈刚 陈刚 Tue, 12 Dec 2006 14:15:00 GMT http://www.aygfsteel.com/chengang/archive/2006/12/12/87353.html http://www.aygfsteel.com/chengang/comments/87353.html http://www.aygfsteel.com/chengang/archive/2006/12/12/87353.html#Feedback 4 http://www.aygfsteel.com/chengang/comments/commentRss/87353.html http://www.aygfsteel.com/chengang/services/trackbacks/87353.html 阅读全文 ]]> 在Eclipse's RCP中配|Hibernate http://www.aygfsteel.com/chengang/archive/2006/08/24/65484.html陈刚 陈刚 Thu, 24 Aug 2006 04:28:00 GMT http://www.aygfsteel.com/chengang/archive/2006/08/24/65484.html http://www.aygfsteel.com/chengang/comments/65484.html http://www.aygfsteel.com/chengang/archive/2006/08/24/65484.html#Feedback 3 http://www.aygfsteel.com/chengang/comments/commentRss/65484.html http://www.aygfsteel.com/chengang/services/trackbacks/65484.html 阅读全文 ]]> Eclipse3.2正式版导出RCP的BUG http://www.aygfsteel.com/chengang/archive/2006/08/09/62517.html陈刚 陈刚 Wed, 09 Aug 2006 02:42:00 GMT http://www.aygfsteel.com/chengang/archive/2006/08/09/62517.html http://www.aygfsteel.com/chengang/comments/62517.html http://www.aygfsteel.com/chengang/archive/2006/08/09/62517.html#Feedback 1 http://www.aygfsteel.com/chengang/comments/commentRss/62517.html http://www.aygfsteel.com/chengang/services/trackbacks/62517.html 换用Eclipse3.2有些日子?jin),从RC一直用到l(f)ast releaseQ以前用3.2RC版在6月䆾导出qRCP目Q没什么问题。现?月,换了(jin)3.2 last releaseQ用*.product文g的导出功能导出RCP目后,却死zd动不?jin)。依赖项目检查过?jin),和以往的版本也比对q了(jin)Q虽然config.ini文g有变化,我想那也是最版本自已的变动,不会(x)有什么大问题。异常日志如下:(x)
!
SESSION
2006
-
08
-
09
10
:
25
:
55.734
-----------------------------------------------
eclipse.buildId
=
unknown java.version
=
1.5
.0_05 java.vendor
=
Sun Microsystems I(yng)nc. BootLoader constants: OS
=
win32, ARCH
=
x86, WS
=
win32, NL
=
zh_CN Command
-
line arguments:
-
os win32
-
ws win32
-
arch x86
!
ENTRY org.eclipse.core.runtime
2006
-
08
-
09
10
:
25
:
57.125
!
MESSAGE 找不C品 com.wxxr.management.admin.console.admin_console_product?br />
!
ENTRY org.eclipse.osgi
4
0
2006
-
08
-
09
10
:
25
:
57.140
!
MESSAGE Application error
!
STACK
1
java.lang.RuntimeException: 找不到应用程序标识?br /> at org.eclipse.core.internal.runtime.PlatformActivator$
1
.run(PlatformActivator.java:
56
) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:
92
) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:
68
) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:
400
) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:
177
) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39
) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25
) at java.lang.reflect.Method.invoke(Method.java:
585
) at org.eclipse.core.launcher.Main.invokeFramework(Main.java:
336
) at org.eclipse.core.launcher.Main.basicRun(Main.java:
280
) at org.eclipse.core.launcher.Main.run(Main.java:
977
) at org.eclipse.core.launcher.Main.main(Main.java:
952
)
!
ENTRY org.eclipse.osgi
2
0
2006
-
08
-
09
10
:
25
:
57.156
!
MESSAGE One or more bundles are not resolved because the following root constraints are not resolved:
!
SUBENTRY
1
org.eclipse.osgi
2
0
2006
-
08
-
09
10
:
25
:
57.156
!
MESSAGE Bundle update@plugins
/
org.eclipse.gef_3.
2.0
.v20060626.jar was not resolved.
!
SUBENTRY
2
org.eclipse.gef
2
0
2006
-
08
-
09
10
:
25
:
57.156
!
MESSAGE Missing required bundle org.eclipse.draw2d_[
3.2
.
0
,
4.0
.
0
).
!
ENTRY org.eclipse.osgi
2
0
2006
-
08
-
09
10
:
25
:
57.156
!
MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry
for
the root cause
if
it exists:
!
SUBENTRY
1
org.eclipse.osgi
2
0
2006
-
08
-
09
10
:
25
:
57.156
!
MESSAGE Bundle update@plugins
/
com.wxxr.management.admin.console_1.
0.0
.jar [
6
] was not resolved.
!
SUBENTRY
2
com.wxxr.management.admin.console
2
0
2006
-
08
-
09
10
:
25
:
57.156
!
MESSAGE Missing required bundle org.eclipse.gef_0.
0.0
.
!
SUBENTRY
1
org.eclipse.osgi
2
0
2006
-
08
-
09
10
:
25
:
57.156
!
MESSAGE Bundle update@plugins
/
org.eclipse.gef_3.
2.0
.v20060626.jar [
40
] was not resolved.
!
SUBENTRY
2
org.eclipse.gef
2
0
2006
-
08
-
09
10
:
25
:
57.156
!
MESSAGE Missing required bundle org.eclipse.draw2d_[
3.2
.
0
,
4.0
.
0
).
下面是中文版的异常日志,英文版的如下Q?br />
!
SESSION
2006
-
08
-
09
10
:
29
:
38.125
-----------------------------------------------
eclipse.buildId
=
unknown java.version
=
1.5
.0_05 java.vendor
=
Sun Microsystems I(yng)nc. BootLoader constants: OS
=
win32, ARCH
=
x86, WS
=
win32, NL
=
zh_CN Command
-
line arguments:
-
os win32
-
ws win32
-
arch x86
!
ENTRY org.eclipse.core.runtime
2006
-
08
-
09
10
:
29
:
39.421
!
MESSAGE Product com.wxxr.management.admin.console.admin_console_product could not be found.
!
ENTRY org.eclipse.osgi
4
0
2006
-
08
-
09
10
:
29
:
39.421
!
MESSAGE Application error
!
STACK
1
java.lang.RuntimeException: No application id has been found. at org.eclipse.core.internal.runtime.PlatformActivator$
1
.run(PlatformActivator.java:
56
) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:
92
) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:
68
) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:
400
) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:
177
) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39
) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25
) at java.lang.reflect.Method.invoke(Method.java:
585
) at org.eclipse.core.launcher.Main.invokeFramework(Main.java:
336
) at org.eclipse.core.launcher.Main.basicRun(Main.java:
280
) at org.eclipse.core.launcher.Main.run(Main.java:
977
) at org.eclipse.core.launcher.Main.main(Main.java:
952
)
!
ENTRY org.eclipse.osgi
2
0
2006
-
08
-
09
10
:
29
:
39.437
!
MESSAGE One or more bundles are not resolved because the following root constraints are not resolved:
!
SUBENTRY
1
org.eclipse.osgi
2
0
2006
-
08
-
09
10
:
29
:
39.437
!
MESSAGE Bundle update@plugins
/
org.eclipse.gef_3.
2.0
.v20060626.jar was not resolved.
!
SUBENTRY
2
org.eclipse.gef
2
0
2006
-
08
-
09
10
:
29
:
39.437
!
MESSAGE Missing required bundle org.eclipse.draw2d_[
3.2
.
0
,
4.0
.
0
).
!
ENTRY org.eclipse.osgi
2
0
2006
-
08
-
09
10
:
29
:
39.437
!
MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry
for
the root cause
if
it exists:
!
SUBENTRY
1
org.eclipse.osgi
2
0
2006
-
08
-
09
10
:
29
:
39.437
!
MESSAGE Bundle update@plugins
/
com.wxxr.management.admin.console_1.
0.0
.jar [
5
] was not resolved.
!
SUBENTRY
2
com.wxxr.management.admin.console
2
0
2006
-
08
-
09
10
:
29
:
39.437
!
MESSAGE Missing required bundle org.eclipse.gef_0.
0.0
.
!
SUBENTRY
1
org.eclipse.osgi
2
0
2006
-
08
-
09
10
:
29
:
39.437
!
MESSAGE Bundle update@plugins
/
org.eclipse.gef_3.
2.0
.v20060626.jar [
25
] was not resolved.
!
SUBENTRY
2
org.eclipse.gef
2
0
2006
-
08
-
09
10
:
29
:
39.437
!
MESSAGE Missing required bundle org.eclipse.draw2d_[
3.2
.
0
,
4.0
.
0
).
最后耗了(jin)一个下午,Google?jin)很多资料,q是不行。于是去Eclipse.org当了(jin)3.2的一?月䆾更新的版本,文g名eclipse-SDK-M20060802-0800-win32.zip。用q个版本导出RCP目一炚w题也没有?br /> 我比对了(jin)3.2M20060802版和3.2正式版的不同。发现config.ini?eclipseproduct都一栗把后者导出的目jar包换在前者中Q也能正常启动。而且我检查了(jin)plugin目录下的文gQ两者种cL目都相同Q所以依赖的插g也对。唯一不同的就是plugin目录下依赖插件的版本不同。我惛_能是后者导出的q些依赖插g的内部存在有BUG吧?br /> 另外Q?.2版的语言包在3.2M20060802中也能用?br />
]]>RCP最灉|的模块组l方?/title> http://www.aygfsteel.com/chengang/archive/2006/04/29/43986.html陈刚 陈刚 Sat, 29 Apr 2006 04:40:00 GMT http://www.aygfsteel.com/chengang/archive/2006/04/29/43986.html http://www.aygfsteel.com/chengang/comments/43986.html http://www.aygfsteel.com/chengang/archive/2006/04/29/43986.html#Feedback 5 http://www.aygfsteel.com/chengang/comments/commentRss/43986.html http://www.aygfsteel.com/chengang/services/trackbacks/43986.html www.ChenGang.com.cn at 2006q??9?(转蝲h明出? 起因是这L(fng)Q有一个已l开发了(jin)比较多功能的RCPE序Q它包含q样几个模块QJMX览?cM于MC4J的功?、系l事件监控器、权限控制框架等。这些模块是写在一个RCP目中的?br /> 现在Q我x灉|些。比如,JMX览器模块这个是通用的,但如果谁要用这个功能,必运行整个RCP目才行Q而我希望q个JMX模块是可单装卸的。充分运行Eclipse的插件机Ӟ让各模块成ؓ(f)一个独立的插gQ应该可以实现这个功能?br /> 比如QJMX模块形成一个独立的插gQ它既可以让其他人当做一个普通插Ӟ安装到Eclipse中;也可以成Z个模块,插入我RCP目中来。这L(fng)设计Q让模块的开重用性变得很高了(jin)?br /> q个x中,RCP部䆾Q仅仅成Z个空壻I提供更插件的插入机制。这个方案特别适合那种x原有插g目Q改装成RCP而发布的目Q基本上原有插g无需做改动?br /> 然而这个想法是否可行呢Q?br />(1) 插g能否x入到EclipseQ插入到RCPI壳目中? (2) 插g中的如果存在依赖关系(比如Q一个插仉要用到另一个插件的代码)Q怎么实现?br />(3) 插g依然的JAR包怎么处理。比如有三个插g都要用到l(f)og4j.jar来输出日志,如果把log4j.jar攑֜插g目的lib目录来用的话,log4j.jar在三个插件各有一份,׃(x)有三份。当三个插g合到RCP目中时Q就有两个log4j是冗余的。这?x)增在RCP目的大?br />(4) RCP目有一些界面元素须要根据插入的插gQ做相应的变化。怎么实现Q?br /> Z(jin)验证W?1)点,我做?jin)这个实验?x) 创徏一个很单的插g目Q此插g目包含一个很单的透视图。我要看看这个透视图能否出现在RCP目中的。很ZQ当我把插g目导出后,安装到RCP目的plugin目录Q再q行RCP目Q发现这个插仉目的透视囑և现在?jin)RCP目的透视囑ֈ表中?br /> 如果是开发时Q我希望q行RCP目Ӟp看到插g目插入q来后的效果。实C不难Q步骤如下:(x) (1) 在Plugin.xml的dependencies,把插仉目加入到Required Plug-ins中?表示目的依? (2) 在run..里的Plug-ins,选择插g目和RCP目Qƈ单击Add Required Plug-ins(表现q行时的依赖) Z(jin)验证W?2)点,我做?jin)这个实验?x) 在插仉目中创徏一个类Q在RCP目中用这个类Q这时还是找不到cȝ。解军_法是Q在打开插g目的plugin.xml-->runtime选项?->Exported Packages(输出的包)Q把q个cL在的包加入进来。这下RCP目可以使用插g目的类?jin)?br /> 关于W?3)点,我没有做实验Q我的想法是Q把jar包封装成插g(可参考eclipse对junit的封?Q从而将目对JAR包的依赖Q{变成Ҏ(gu)件的依赖?br /> 关于W?4)点,我没有做实验Q我的想法是Q通过自定义RCP目的扩展点来实现?br /> 在我q个目分解模块q会(x)遇到q样的问题:(x)权限安全模块是媄(jing)响到整个RCP目的,但JMX模块独立出来后,昄不是必须要权限安全模块的。怎么解除q种依赖关系呢。我看是解除不了(jin)的了(jin)Q但可以设一个开养I让权限安全模块失效。这栯然代码和权限安全模块有依赖,但可以把权限(g)查的功能关闭?br /> ȝQ?br /> q种方式虽然灉|Q但也是有代L(fng)---~程和项目管理更复杂?jin)?img src ="http://www.aygfsteel.com/chengang/aggbug/43986.html" width = "1" height = "1" /> ]]> RCP中product文g的用?/title> http://www.aygfsteel.com/chengang/archive/2006/04/29/43926.html陈刚 陈刚 Sat, 29 Apr 2006 01:19:00 GMT http://www.aygfsteel.com/chengang/archive/2006/04/29/43926.html http://www.aygfsteel.com/chengang/comments/43926.html http://www.aygfsteel.com/chengang/archive/2006/04/29/43926.html#Feedback 0 http://www.aygfsteel.com/chengang/comments/commentRss/43926.html http://www.aygfsteel.com/chengang/services/trackbacks/43926.html www.ChenGang.com.cn at 2006q??9?br /> 插g或RCP目Q可以创Z?.product文gQ这个文件提供了(jin)一个和plugin.xmlcM的界面。它提供?jin)项目的启动、打包导出、项目个性化{功能。我最喜欢的还是它的打包导出功能。在前段旉Q有一关于依赖包升后的处理Q也涉及(qing)到这个文?a href="/chengang/archive/2006/04/27/43494.html">http://www.aygfsteel.com/chengang/archive/2006/04/27/43494.html?br /> 今天来简单谈谈这个文件?br />(1) 创徏product文gQFile -> new -> otherQ选择plug-in Development->Product configuration (2) 如果你用run...q以product(非application)方式启动q项目,则在界面的第三项QUse a launch configuration可以选择C的项目。如果在plugin.xml有关于product的扩展点讄Q则在界面的W二:(x)Use an existing product可以选择C的项目。徏议先考虑W二,再考虑W三V?br /> (3) 如果plugin.xmlq没有关于product的扩展点讄Q则创徏product文g?x)在plugin.xml创徏一个?br /> < extension id = " application_ccc " // 可以d point = " org.eclipse.core.runtime.applications " > < application > < run class = " aaa.bbb.ccc.Application " > //对应于项目里实现?jin)IPlatformRunnable的那个类 </ run > </ application > </ extension > < extension id = " product_ccc " // 可以d point = " org.eclipse.core.runtime.products " > < product application = " aaa_bbb_ccc.application_ccc " // aaa_bbb_ccc对应于MANIFEST.MF的Bundle-SymbolicName。可以改为aaa.bbb.cccQ当然MANIFEST.MF中也要相应做修改?/span> name = " RCP Product " > < property name = " aboutText " value= " %aboutText " > //about界面的显C文字,在plugin.properties文g中定?/font> </ property > < property name = " windowImages " value= " icons/sample2.gif " > </ property > < property name = " aboutImage " value= " product_lg.gif " > </ property > </ product > </ extension >
打开*.product在overview选项卡的W二Product IDQ可以newQ这?x)在plugin.xml新增一个product扩展点设定。徏议不要这P没有必要在plugin.xml中保留两个以上的product扩展点设定?br /> 用product文g来导出项?br /> 在product文g中,q可以设定执行文件的名称和图标,如下 较果如下Q?br /> ]]> lRCPpȝd全局快捷?/title> http://www.aygfsteel.com/chengang/archive/2006/04/28/43873.html陈刚 陈刚 Fri, 28 Apr 2006 13:35:00 GMT http://www.aygfsteel.com/chengang/archive/2006/04/28/43873.html http://www.aygfsteel.com/chengang/comments/43873.html http://www.aygfsteel.com/chengang/archive/2006/04/28/43873.html#Feedback 0 http://www.aygfsteel.com/chengang/comments/commentRss/43873.html http://www.aygfsteel.com/chengang/services/trackbacks/43873.html ?陈刚 from www.chengang.com.cn at 2006q??8?br /> 一个RCPpȝQ给它添加一个象Eclipse中Ctrl+Shift+O一L(fng)全局快捷键,怎么加? 参考了(jin)RCP的Email目CZQ给我RCP目中MonitorActionQ显CZ个监视器的命 令)(j)d一个快捷键Ctrl+1。简单把d的过E概q如下:(x) 1、首先在plugin.xml中添加两个扩展点如下 < extension point = " org.eclipse.ui.bindings " > < key commandId = " org.eclipse.ui.file.exit " schemeId= " org.eclipse.ui.defaultAcceleratorConfiguration " sequence= " CTRL+X " /> < key commandId = " adminconsole.monitor " schemeId= " org.eclipse.ui.defaultAcceleratorConfiguration " sequence= " CTRL+1 " /> </ extension > < extension point = " org.eclipse.ui.commands " > < category id = " adminconsole.perspective " name= " Perspective " /> < command categoryId = " adminconsole.perspective " id= " adminconsole.monitor " name= " Open Monitor Perspective " /> </ extension >
说明Q?br />。org.eclipse.ui.file.exit是另一个退出系l命令,是复用了(jin)Eclipse本n的那个,它和本例无关?br />。commandId要求唯一 。cmmands扩展点的category是一个组Q估计不要也可以Q最后还是加上吧?br />。bindings扩展点中的commandId对应于cmmands扩展点中的id 2、创Z个类Q专门保存所有commandIdpublic interface I(yng)CommandIds { public static final String CMD_MONITOR = " adminconsole.monitor " ; }
3、创建Actionc,在构造函数里用两个方法注册一?br /> private static class MonitorAction extends Action { public MonitorAction() { setText( " 监视 " ); // The id is used to refer to the action in a menu or toolbar setId(ICommandIds.CMD_MONITOR); // Associate the action with a pre-defined command, to allow key bindings. setActionDefinitionId(ICommandIds.CMD_MONITOR); } ... }
4、在ApplicationActionBarAdvisor的makeActionsҎ(gu)Q给monitorAction对象加上q样一?
register(monitorAction);
注意Q如果你没有在plugin.xml和makeActions做上面讲q的讄Q加上这一句将可能D
你的RCPpȝ无法启动?/div>
]]>
RCP中包更新后的处理 http://www.aygfsteel.com/chengang/archive/2006/04/27/43494.html陈刚 陈刚 Thu, 27 Apr 2006 02:33:00 GMT http://www.aygfsteel.com/chengang/archive/2006/04/27/43494.html http://www.aygfsteel.com/chengang/comments/43494.html http://www.aygfsteel.com/chengang/archive/2006/04/27/43494.html#Feedback 0 http://www.aygfsteel.com/chengang/comments/commentRss/43494.html http://www.aygfsteel.com/chengang/services/trackbacks/43494.html 我gef、emf的包q是以前老的Q现在用的是Eclipse 3.2M6Q于是去eclipse.org下蝲?jin)相应版gef/emfQ更C下?br /> q一更新问题来了(jin)Q项目运行不h?jin)。报名application id找不刎ͼ或product找不刎ͼC太清Q。以下是处理的过E?br /> Q?Q把????.product依赖包重新弄?jin)一遍。不行?br />Q?Q把run..中的依赖包重新弄?jin)一遍,用run来运行。成功?br />Q?Q通过????.product的项目导出功能,导出目后运行。运行失败?br />Q?Q嗯Q可能是????.product中依赖包没有调整。于是和Q?Q一样重新弄?jin)依赖包。再ơ导出项目还是不行。ƈ且用run来运行,又失败了(jin)?br />Q?Q看来run..????.product没有影响Q????.product反过来对run..里的讑֮产生的媄(jing)响?br />Q?Q重做了(jin)Q?Q步Q再删除????.productQ重新生????.product。所有问题都解决Q运行成功,目导出后也q行成功?br /> ȝQ看来更C赖包后,臛_要做以下处理 Q?Q在run..中调整依赖包. Q?Q重???.product文g?/div>
]]> 在Eclipse RCP中用Spring http://www.aygfsteel.com/chengang/archive/2006/04/26/43378.html陈刚 陈刚 Wed, 26 Apr 2006 09:44:00 GMT http://www.aygfsteel.com/chengang/archive/2006/04/26/43378.html http://www.aygfsteel.com/chengang/comments/43378.html http://www.aygfsteel.com/chengang/archive/2006/04/26/43378.html#Feedback 5 http://www.aygfsteel.com/chengang/comments/commentRss/43378.html http://www.aygfsteel.com/chengang/services/trackbacks/43378.html
注:(x)在发完此文后Q我惊奇的发现在新版Eclipse中(我用的是3.2M6Q已l不需要{换ClassLoader。估计这是RCP的一个BUGQ已l被FIX。希望各位同学共同验证一下,如果是这L(fng)话,q篇文章也就没有什么意义了(jin)?br />
在RCP中用SpringQ最关键的一点在于spring配置文g的读取,因ؓ(f)RCP使用自己的ClassLoaderQ所以用通常的方法是无法装蝲Spring的配|文件。解决的思\是:(x)在读取Spring配置文g时将RCP的ClassLoader暂时换一下?br /> 在这里我Ҏ(gu)Spring配置文g在项目中的存放位|,l出两种办法?br />一、配|文件存攑֜源代码根目录下?/strong> 假设我有一个叫admin_console的项目,我把Spring的配|文件myspring.xml攑֜源代码根据目录src下,如下图所C?br />admin_console --src --cn //包名 --com --chengang ---...... //源代码类 --myspring.xml //Spring配置文gQ位于src目录下和cn目录q --bin --lib --icons --properties 那么我们在RCPE序中可以这h装蝲myspring.xml ClassLoader oldLoader = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(this.getClass() .getClassLoader()); ctx = new ClassPathXmlApplicationContext("/myspring.xml"); } finally { Thread.currentThread().setContextClassLoader(oldLoader); }
二、配|文件存攑֜目根目录的某个子目录下 目根目录和源代码根目录是不同的两个概念。如上图的项目结构中Qsrc是源代码根目录,admin_console是项目根目录Q那么properties是目根目录下的一个子目录?br /> 如果myspring.xml攑օ到properties目录中,以上的读取代码就没用?jin),dҎ(gu)如下Q?br /> ClassLoader oldLoader = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(this.getClass() .getClassLoader()); ctx = new FileSystemXmlApplicationContext(ProjectUtil.toFullPath("properties/myspring.xml")); } finally { Thread.currentThread().setContextClassLoader(oldLoader); }
其中ProjectUtil.toFullPath是我自己写的一个方法,主要是得到myspring.xml的绝对\径,其代码如下:(x)import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL;
import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.ui.plugin.AbstractUIPlugin;
import com.wxxr.management.admin.console.AdminConsolePlugin;
/** * 用于插g目和非插g目Q提供两者通用的方法接?br /> * @author chengang 2006-3-30 */ public class ProjectUtil {
private static AbstractUIPlugin plugin = AdminConsolePlugin.getDefault();
private ProjectUtil() {}
/** * 判断当前的运行状态是否ؓ(f)插g方式 * @return true=插g方式q行 */ private static boolean isPlugin() { return plugin != null; }
public static URL getURL(String path) { if (isPlugin())//如果是插?br /> return FileLocator.find(plugin.getBundle(), new Path(path), null); else try { return new URL("file:" + path); } catch (MalformedURLException e) { throw new RuntimeException(path + " is error", e); } }
public static InputStream getInputStream(String path) { URL url = getURL(path); try { return url.openStream(); } catch (IOException e) { throw new RuntimeException(e); } }
public static String toFullPath(String path) { if (isPlugin()) { try { return FileLocator.toFileURL(ProjectUtil.getURL(path)).getPath(); } catch (IOException e) { throw new RuntimeException(path + " toFullPath is fault", e); } } else { return path; } }
}
三、ȝ 上面两种方式那一U更好呢Q应该是W二U。一般来_(d)源代码的~译文g?x)打成一个jar包(其实不打成一个JAR包也可以的,我在很多以前尝试过class文g松散的部|Ԍ如果哪个c要修改Q修改后只部v覆盖q个classQ看h也挺方便。不q这U方式不是最?jng)_践,不推荐正式发布时使用Q一不心(j)可能引v依赖它的其他cd现问题。)(j)。如果用W一U方式在目打包后,myspring.xml?x)打包到jar文g中,q样不利于今后对myspringq行动态修攏V如果用W二U就没有q种~点?br /> 很多时候,在Eclipse开发环境中Q运行RCPE序没有问题。但导出目后,在独立的环境中却报配|文Ӟ不光是SpringQ找不到的错误,解决的方法都基本与此相同?br /> ]]> Eclipse插g集合 http://www.aygfsteel.com/chengang/archive/2006/04/01/38609.html陈刚 陈刚 Sat, 01 Apr 2006 07:32:00 GMT http://www.aygfsteel.com/chengang/archive/2006/04/01/38609.html http://www.aygfsteel.com/chengang/comments/38609.html http://www.aygfsteel.com/chengang/archive/2006/04/01/38609.html#Feedback 6 http://www.aygfsteel.com/chengang/comments/commentRss/38609.html http://www.aygfsteel.com/chengang/services/trackbacks/38609.html
Easy Explore 我必装的工具Q可以直接打开目或文件的所在目?br />Easy Struts q个q接有两个YӞq个是用于Struts开发的 Update URLQ?a >http://easystruts.sourceforge.net/eclipse/updates/site.xml
Subversion for Eclipse 代码版本控制工具Subversion的客L(fng)Eclipse插g Update URLQ?a >http://subclipse.tigris.org/update
Jalopy for Eclipse(3.0,3.1) - 代码化工具 Download URLQ?a >http://prdownloads.sourceforge.net/jalopy/jalopy-eclipse-0.2.7.zip
Freemarker for Eclipse - JSP模版引擎 Version: 0.3.1 Download URLQ?a >http://sourceforge.net/project/showfiles.php?group_id=794&package_id=86096
log4e - Log代码工具 Update URLQ?a >http://log4e.jayefem.de/update
TomcatPlugin for Eclipse - Tomcat调试 Download URLQ?a >http://www.sysdeo.com/eclipse/tomcatplugin
XMLBuddy for Eclipse - XML工具 Download URLQ?a >http://www.xmlbuddy.com
Checkstyle for Eclipse - 代码规范(g)查工? Update URLQ?a >http://eclipse-cs.sourceforge.net/update/
Metrics for Eclipse - 代码复杂度检查工? Update URLQ?a >http://metrics.sourceforge.net/update/
JDepend for Eclipse - 代码依赖度检查工? Download URLQ?a >http://andrei.gmxhome.de/eclipse/
JBoss Hibernate - ORM工具 Update URLQ?a >http://downloads.jboss.com/jbosside/updates/development/
AnyEdit - 增强Editor工具 Download URLQ?a >http://andrei.gmxhome.de/anyedit/links.html
serialVer - 生成serialVersionUID工具 Download URLQ?a >http://211.147.225.71/elvis/serialversion.zip
QuickREx - 正则表达式验证工? Update URLQ?a >http://www.bastian-bergerhoff.com/eclipse/features
]]> Plugin和App的统一路径接口 http://www.aygfsteel.com/chengang/archive/2006/03/30/38214.html陈刚 陈刚 Thu, 30 Mar 2006 03:22:00 GMT http://www.aygfsteel.com/chengang/archive/2006/03/30/38214.html http://www.aygfsteel.com/chengang/comments/38214.html http://www.aygfsteel.com/chengang/archive/2006/03/30/38214.html#Feedback 0 http://www.aygfsteel.com/chengang/comments/commentRss/38214.html http://www.aygfsteel.com/chengang/services/trackbacks/38214.html 在Eclipse插gQPluginQ开发中Q需要写一些Test CaseQby JUnitQ,q些Test Case不是以插件方法运行的Q而是一些普通的Application。这时要注意到插件和App获取路径的方式是不同的,q时如果你要试一些项目中的一些涉?qing)到L件的一些类Q无疑会(x)D出错。ؓ(f)?jin)让Plugin和App路径获取透明化,不防写一个工L(fng)来提供统一的\径获取方法,CZcd下所C:(x) q个思\也可以扩展到Plugin和App不一L(fng)地方Q这样写起Test Case方便多?jin)?br /> 说明Q示例中的AdminConsolePlugincd是创建插仉目自动生成的那个c,你的目也许叫“项目名+Plugin?br />import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import org.eclipse.core.runtime.Path; import org.eclipse.ui.plugin.AbstractUIPlugin; import com.wxxr.management.admin.console.AdminConsolePlugin; /** * 用于插g目和非插g目Q提供两者通用的方法接?br /> * @author chengang 2006-3-30 */ public class ProjectUtil { private static AbstractUIPlugin plugin = AdminConsolePlugin.getDefault(); private ProjectUtil() {} /** * 判断当前的运行状态是否ؓ(f)插g方式 * @return true=插g方式q行 */ private static boolean isPlugin() { return plugin != null ; } public static URL getURL(String path) { if (isPlugin()) // 如果是插?/span> // return plugin.find( new Path(path)); return FileLocator.find(plugin.getBundle(), new Path(path), null); //陈刚修改?006-8-24Qeclipse3.2已经用此Ҏ(gu) else try { return new URL( " file: " + path); } catch (MalformedURLException e) { throw new RuntimeException(path + " is error " , e); } } public static I(yng)nputStream getInputStream(String path) { URL url = getURL(path); try { return url.openStream(); } catch (IOException e) { throw new RuntimeException(e); } } }
]]> RCP中因ClassLoader 而导致找不到cȝ解决Ҏ(gu) http://www.aygfsteel.com/chengang/archive/2006/03/07/34073.html陈刚 陈刚 Tue, 07 Mar 2006 06:49:00 GMT http://www.aygfsteel.com/chengang/archive/2006/03/07/34073.html http://www.aygfsteel.com/chengang/comments/34073.html http://www.aygfsteel.com/chengang/archive/2006/03/07/34073.html#Feedback 0 http://www.aygfsteel.com/chengang/comments/commentRss/34073.html http://www.aygfsteel.com/chengang/services/trackbacks/34073.html
我的RCP对ClassLoad问题的解冻Iq是一个读jndi配置文g的方法?/DIV>
private void intJNDI() { ClassLoader cl = Thread.currentThread().getContextClassLoader(); //保存老的ClassLoader Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader()); //讄新的ClassLoader IPath path = new Path("properties/jndi.properties"); URL url = AdminConsolePlugin.getDefault().find(path); Properties p = new Properties(); try { p.load(url.openStream()); String address = System.getProperty("jndi.address"); String port = System.getProperty("jndi.port"); if (address != null && !address.trim().equals("") && port != null && !port.trim().equals("")) { p.remove("java.naming.provider.url"); p.setProperty("java.naming.provider.url", "jnp://" + address.trim() + ":" + port.trim()); } AdminConsolePlugin.getDefault().setJNDIInitContext(new InitialContext(p)); } catch (Throwable e) { throw new RuntimeException("Failed to connect to domain controller.", e); } finally { Thread.currentThread().setContextClassLoader(cl);//最后恢复成老的ClassLoader } }
]]> Eclipse插g?qing)RCP开发中的第三方库的讄 http://www.aygfsteel.com/chengang/archive/2006/03/07/34072.html陈刚 陈刚 Tue, 07 Mar 2006 06:48:00 GMT http://www.aygfsteel.com/chengang/archive/2006/03/07/34072.html http://www.aygfsteel.com/chengang/comments/34072.html http://www.aygfsteel.com/chengang/archive/2006/03/07/34072.html#Feedback 0 http://www.aygfsteel.com/chengang/comments/commentRss/34072.html http://www.aygfsteel.com/chengang/services/trackbacks/34072.html
很多人在开发RCPӞ发现开发时都没问题Q但导出成包时却报找不到W三方库中类的错误。主要原因就是没有将W三方库配置好。现在我l出一个实现项目的配置为示例,以供参考?/div>
环境QEclipse3.2M3 一个RCP的实际项目,插g目同样适用此方?/div>
一、最关键的就是plugin.xml和MANIFEST.MF
所有界面上的最后操作,l果都是保存在这两个文g中。注意:(x)?classpath”文件只是开发时对引用第三库有用Q打包发行之后它的作用就没有?jin),q得靠plugin.xml和MANIFEST.MF?/div>
1、plugin.xml文g
<?xml version="1.0" encoding="GB2312"?> <?eclipse version="3.0"?> <plugin> <extension id="AdminConsole" point="org.eclipse.core.runtime.applications"> <application> <run class="com.wxxr.management.admin.console.AdminConsole"/> </application> </extension> <extension id="AdminConsole" point="org.eclipse.core.runtime.products"> <product name="%productName" application="com.wxxr.management.admin.console.AdminConsole"> <property name="appName" value="%swtAppName"/> <property name="windowImages" value="icons/eclipse.gif,icons/eclipse32.gif"/> <property name="aboutText" value="%aboutText"/> <property name="aboutImage" value="icons/eclipse_lg.gif"/> <property name="windowImages" value="icons/alt16.gif,icons/eclipse.gif"/> </product> </extension> <extension point="org.eclipse.ui.perspectives"> <perspective class="com.wxxr.management.admin.console.monitor.MonitorPerspective" name="%perspectiveName" id="com.wxxr.management.admin.console.monitor.MonitorPerspective"/> <perspective class="com.wxxr.management.admin.console.configure.ConfigurePerspective" name="%configurePerspectiveName" id="com.wxxr.management.admin.console.configure.ConfigurePerspective"/> <perspective class="com.wxxr.management.admin.console.jmx.JMXPerspective" name="%jmxPerspectiveName" id="com.wxxr.management.admin.console.jmx.JMXPerspective"/> </extension>
<extension point="org.eclipse.ui.editors"> <editor name="事g列表" icon="icons/alt16.gif" class="com.wxxr.management.admin.console.log.ui.LogEditor" id="com.wxxr.management.admin.console.log.ui.LogEditor"> </editor> <editor name="地图" icon="icons/map_view.gif" class="com.wxxr.management.admin.console.map.MapEditor" id="com.wxxr.management.admin.console.map.MapEditor"> </editor> </extension>
<extension point="org.eclipse.ui.views"> <category id="com.wxxr.management.admin.console.monitor.view" name="%views.category.name"/> <view id="com.wxxr.management.admin.console.navigator.ui.StationExploreView" name="工作? icon="icons/eclipse.gif" class="com.wxxr.management.admin.console.navigator.ui.StationExploreView" category="com.wxxr.management.admin.console.monitor.view"/> <view name="事gl节" icon="icons/eclipse.gif" category="com.wxxr.management.admin.console.monitor.view" class="com.wxxr.management.admin.console.monitor.eventview.EventDetailView" id="com.wxxr.management.admin.console.monitor.eventview.EventDetailView" /> <view name="事gl计" icon="icons/eclipse.gif" category="com.wxxr.management.admin.console.monitor.view" class="com.wxxr.management.admin.console.monitor.view.SystemEventStatisticsView" id="com.wxxr.management.admin.console.monitor.view.SystemEventStatisticsView" /> <view name="紧急事件处? icon="icons/eclipse.gif" category="com.wxxr.management.admin.console.monitor.view" class="com.wxxr.management.admin.console.emergency.ui.EmergencyEventReceiverView" id="com.wxxr.management.admin.console.emergency.ui.EmergencyEventReceiverView" />
<category id="com.wxxr.management.admin.console.jmx.view" name="%views.category.name"/> <view name="JMX Connections" icon="icons/eclipse.gif" category="com.wxxr.management.admin.console.jmx.view" class="com.wxxr.management.admin.console.jmx.ui.JMXExploreView" id="com.wxxr.management.admin.console.jmx.ui.JMXExploreView" /> <view name="JMX Attributes View" icon="icons/eclipse.gif" category="com.wxxr.management.admin.console.jmx.view" class="com.wxxr.management.admin.console.jmx.ui.AttributesView" id="com.wxxr.management.admin.console.jmx.ui.AttributesView" /> <view name="JMX Operations View" icon="icons/eclipse.gif" category="com.wxxr.management.admin.console.jmx.view" class="com.wxxr.management.admin.console.jmx.ui.OperationsView" id="com.wxxr.management.admin.console.jmx.ui.OperationsView" /> <view name="JMX MBean View" icon="icons/eclipse.gif" category="com.wxxr.management.admin.console.jmx.view" class="com.wxxr.management.admin.console.jmx.ui.MBeanView" id="com.wxxr.management.admin.console.jmx.ui.MBeanView" /> </extension> <extension id="AdminConsole" point="org.eclipse.core.runtime.products"> <product application="com.wxxr.management.admin.console.AdminConsole" name="AdminConsole"/> </extension>
</plugin>
2、META-INF\MANIFEST.MF文g
注意Q?/div>
Q?Q这里require-bundle定义?jin)项目依赖的插g?/div>
Q?QBundle-ClassPath定义?jin)引用的W三方库Q别忘了(jin)把AdminConolse目自己console.jar加进去,否则q自己项目里的类都会(x)找不到?/div>
Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: com.wxxr.management.admin.console; singleton:=true Bundle-Version: 1.0.0 Bundle-Activator: com.wxxr.management.admin.console.AdminConsolePlugin Bundle-Localization: plugin Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.eclipse.core.resources, org.eclipse.gef, org.eclipse.ui.forms, org.eclipse.ui.console Eclipse-AutoStart: true Bundle-Vendor: %providerName Bundle-ClassPath: console.jar, lib/commons-codec-1.3.jar, lib/jboss.jar, lib/jbossall-client.jar, lib/jboss-jmx.jar, lib/jboss-system.jar, lib/log4j-1.2.8.jar, lib/wxxr-common-1.0-b1.jar, lib/wxxr-common-jboss-1.0-b1.jar, lib/wxxr-db-persistence-1.0-b1.jar, lib/wxxr-jboss-controller-1.0-b1.jar, lib/wxxr-jboss-workstation-1.0-b1.jar, lib/wxxr-remoting-1.0-b1.jar, lib/wxxr-security-1.0-b1.jar, lib/xerces-2.6.2.jar, lib/xmlParserAPIs-2.2.1.jar, lib/xmlrpc-2.0.jar
3、build.properties文g。这个文件主要是用Eclipse导出包的时候用?/div>
source.console.jar = src/ output.console.jar = bin/ bin.includes = plugin.xml,\ *.jar,\ console.jar, \ plugin.properties pluginName = Admin Console Plug-in providerName = WXXR.com.cn perspectiveName = Admin Console configurePerspectiveName= Configure jmxPerspectiveName= JMX Console
jars.extra.classpath = lib/commons-codec-1.3.jar,\ lib/jboss.jar,\ lib/jbossall-client.jar,\ lib/jboss-jmx.jar,\ lib/jboss-system.jar,\ lib/log4j-1.2.8.jar,\ lib/wxxr-common-1.0-b1.jar,\ lib/wxxr-common-jboss-1.0-b1.jar,\ lib/wxxr-db-persistence-1.0-b1.jar,\ lib/wxxr-jboss-controller-1.0-b1.jar,\ lib/wxxr-jboss-workstation-1.0-b1.jar,\ lib/wxxr-security-1.0-b1.jar,\ lib/wxxr-remoting-1.0-b1.jar,\ lib/xerces-2.6.2.jar,\ lib/xmlParserAPIs-2.2.1.jar,\ lib/xmlrpc-2.0.jar
4、plugin.propertiesQ这个放一些上面几个文件用到的变量?/div>
pluginName= WXXR Admin Console providerName= wxxr.com.cn
productName= WXXR SMS Operation Platform appName= WXXR Admin Console perspectives.browser.name= WXXR Admin Console views.category.name= WXXR Admin Console views.browser.name= Browser views.history.name= History views.stationexplore.name= Stations views.tasklist.name= Task List views.loglist.name= Workstation Monitor monitor.message.detail=Monitor Message Detail monitor.message.statistics=????
swtAppName= AdminConsole
aboutText= WXXR Admin Console \n\n\
(c) Copyright WXXR Ltd. and others 2003, 2004. All rights reserved.\n\
Visit
http://www.wxxr.com.cn
二、图形方?/div>
有时直接~辑plugin.xml{文件容易出错(全角I格什么的Q,那么可以用图形编辑方式来Q不q最后结果还是反映到plugin.xml{文件中的。我把plugin.xml打开Q然后一个项一个项的把图截下来Q以供大家参考?/div>
q个界面是build.properties配置的反?/div>
最好在目属性的库用引项的效果如下:(x)
作者简?/strong>
陈刚Q广西桂林hQ著作有《Eclipse从入门到_N?br />(zhn)可以通过其博客了(jin)解更多信息和文章Q?a >http://www.chenGang.com.cn
]]>
在RCP目中找不到JAR包的异常的解?/title> http://www.aygfsteel.com/chengang/archive/2006/03/07/34063.html陈刚 陈刚 Tue, 07 Mar 2006 06:32:00 GMT http://www.aygfsteel.com/chengang/archive/2006/03/07/34063.html http://www.aygfsteel.com/chengang/comments/34063.html http://www.aygfsteel.com/chengang/archive/2006/03/07/34063.html#Feedback 0 http://www.aygfsteel.com/chengang/comments/commentRss/34063.html http://www.aygfsteel.com/chengang/services/trackbacks/34063.html
前段旉看到有版友,因ؓ(f)RCP中找不到JAR包的问题Q弄得焦头烂额。由于没有版友的开发环境,所以也很难l他提出错误原因在哪。授Z|不如授h以渔。今天我也遇C(jin)一ơ了(jin)Q就把我解决q个问题的思\写出来,以供参考?BR> 今天RCP加入一个新的模块,其中需要用DOM4Jd一个XML文g。进行的q程如下 1.dom4j-1.6.jar复制到LIB目录?BR> 2.在maven的project.xml中加入了(jin)引用Q这是ؓ(f)?jin)在构徏目Ӟ从jar仓库自动dom4j-1.6.jar复制到项目lib目录?BR> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6</version> <properties> <plugin.library>true</plugin.library> </properties> </dependency> 3.在项目下maven update_libs Q将目的lib库更C?q时W?步手动复制可以不用,如果你是用ANT或手工构建项目的Q第2?步省? 4. 在build.properties加入对dom4j-1.6.jar的引?BR>jars.extra.classpath = lib/commons-codec-1.3.jar,\ lib/dom4j-1.6.jar,\ lib/jboss.jar,\
q时已经可以在Eclipse中开发dom4j的程序了(jin)Q。在Application环境下做?jin)dom4j的测试,没有问题。虽然没有在.classpath中加入对dom4j-1.6.jar的引用,但项目属性中?java build path"->"Libraries"中的"Plug-in Dependencies"中已l有?jin)对dom4j-1.6.jar的引用?BR>
然而运行RCPE序q行试时却出现?jin)错误,界面和console没有提示错误原因。是E序错误吗?于是程序注释至最Q还是不行。难道是包没扑ֈ的错误?哦忘记去看看错误日志?jin),于是转到runtime-adminconsole\.metadata目录下打开.log文gQ果然是cL扑ֈ错误异常Q如下:(x)
java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader
但application下怎么能找到dom4j包呢Q难道有什么地方的对dom4j我没加上Q于是打开plugin.xmlQ在它的囑Ş界面里翻?jin)翻Q发现runtime选项卡的classpath没有加入对dom4j包的引用。runtimew名思议是q行时的依赖V在q里加上对dom4j包的引用后,错误解除?BR>
加的Ҏ(gu)有两U,最单的通用囑Ş界面加,另外也可以通过META-INF/MANIFEST.MF文g来加。我?fn)惯直接操作文gQ当初ؓ(f)?jin)加入dom4j包的引用在项目根目录下翻?jin)一遍,却没注意META-INF目录下还有一个配|?/DIV>
]]>
draw2dCZ错误的解?/title> http://www.aygfsteel.com/chengang/archive/2006/03/02/33198.html陈刚 陈刚 Thu, 02 Mar 2006 06:08:00 GMT http://www.aygfsteel.com/chengang/archive/2006/03/02/33198.html http://www.aygfsteel.com/chengang/comments/33198.html http://www.aygfsteel.com/chengang/archive/2006/03/02/33198.html#Feedback 0 http://www.aygfsteel.com/chengang/comments/commentRss/33198.html http://www.aygfsteel.com/chengang/services/trackbacks/33198.html ?陈刚 2005-11-04 在学?fn)draw2d中,发现以前Qeclipse2.*Q没问题的帮助自带示例,在eclipse3.1q行有了(jin)一些问题:(x)椭圆{显CZ出来。经试Q解x法如下:(x)
在程序中加一句 ellipse.setBounds( new Rectangle( 0 , - 137 , 1000 , 1000 )); 卛_Q?BR> 估计是过L一个大的默认|而新版的draw2d取消?jin)。另?draw2dq不包含在默认的Eclipse下蝲包中,你需要去eclipse.org另外下蝲. ]]>
վ֩ģ壺
|
|
|
ˮ |
ף |
|
|
̨ |
|
|
ϴ |
ʡ |
|
٤ʦ |
|
Ѱ |
|
ٸ |
ͭ |
ͬ |
ƽ |
|
|
ʻ |
ɫ |
Ͽ |
Ƿ |
|
|
ʡ |
ﴨ |
|
|
|
|
ɽ |
|
׳ |
Դ |
ӽ |
|