??xml version="1.0" encoding="utf-8" standalone="yes"?>波多野结衣在线网站,亚洲精品午夜av福利久久蜜桃,国产精品亚洲四区在线观看http://www.aygfsteel.com/ranxiang/category/4388.htmlx于J2SEQJ2EE以及开源方面的技术?/description>zh-cnTue, 27 Feb 2007 09:18:23 GMTTue, 27 Feb 2007 09:18:23 GMT60【{载】Eclipse快捷?/title><link>http://www.aygfsteel.com/ranxiang/articles/35121.html</link><dc:creator>冉翔</dc:creator><author>冉翔</author><pubDate>Mon, 13 Mar 2006 12:00:00 GMT</pubDate><guid>http://www.aygfsteel.com/ranxiang/articles/35121.html</guid><wfw:comment>http://www.aygfsteel.com/ranxiang/comments/35121.html</wfw:comment><comments>http://www.aygfsteel.com/ranxiang/articles/35121.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ranxiang/comments/commentRss/35121.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ranxiang/services/trackbacks/35121.html</trackback:ping><description><![CDATA[<P>原脓地址Q?A >http://www.eclipseworld.org/bbs/read.php?tid=102&fpage=1</A><BR><BR>本文档从Eclipse软g上整理,是列Z标准的快捷键Q未列出Emacs快捷键?BR>转脓h明作者和出处?/P> <P>~辑<BR>作用?功能 快捷?BR>全局 查找q替?Ctrl+F<BR>文本~辑?查找上一?Ctrl+Shift+K<BR>文本~辑?查找下一?Ctrl+K<BR>全局 撤销 Ctrl+Z<BR>全局 复制 Ctrl+C<BR>全局 恢复上一个选择 Alt+Shift+?BR>全局 剪切 Ctrl+X<BR>全局 快速修?Ctrl1+1<BR>全局 内容辅助 Alt+/<BR>全局 全部选中 Ctrl+A<BR>全局 删除 Delete<BR>全局 上下文信?Alt+Q?BR>Alt+Shift+?<BR>Ctrl+Shift+Space<BR>Java~辑?昄工具提示描述 F2<BR>Java~辑?选择装元素 Alt+Shift+?BR>Java~辑?选择上一个元?Alt+Shift+?BR>Java~辑?选择下一个元?Alt+Shift+?BR>文本~辑?增量查找 Ctrl+J<BR>文本~辑?增量逆向查找 Ctrl+Shift+J<BR>全局 _脓 Ctrl+V<BR>全局 重做 Ctrl+Y</P> <P>?<BR>查看<BR>作用?功能 快捷?BR>全局 攑֤ Ctrl+=<BR>全局 ~小 Ctrl+-</P> <P>?<BR>H口<BR>作用?功能 快捷?BR>全局 Ȁzȝ辑器 F12<BR>全局 切换~辑?Ctrl+Shift+W<BR>全局 上一个编辑器 Ctrl+Shift+F6<BR>全局 上一个视?Ctrl+Shift+F7<BR>全局 上一个透视?Ctrl+Shift+F8<BR>全局 下一个编辑器 Ctrl+F6<BR>全局 下一个视?Ctrl+F7<BR>全局 下一个透视?Ctrl+F8<BR>文本~辑?昄标尺上下文菜?Ctrl+W<BR>全局 昄视图菜单 Ctrl+F10<BR>全局 昄pȝ菜单 Alt+-</P> <P>?<BR>D<BR>作用?功能 快捷?BR>Java~辑?打开l构 Ctrl+F3<BR>全局 打开cd Ctrl+Shift+T<BR>全局 打开cd层次l构 F4<BR>全局 打开声明 F3<BR>全局 打开外部javadoc Shift+F2<BR>全局 打开资源 Ctrl+Shift+R<BR>全局 后退历史记录 Alt+?BR>全局 前进历史记录 Alt+?BR>全局 上一?Ctrl+,<BR>全局 下一?Ctrl+.<BR>Java~辑?昄大纲 Ctrl+O<BR>全局 在层ơ结构中打开cd Ctrl+Shift+H<BR>全局 转至匚w的括?Ctrl+Shift+P<BR>全局 转至上一个编辑位|?Ctrl+Q<BR>Java~辑?转至上一个成?Ctrl+Shift+?BR>Java~辑?转至下一个成?Ctrl+Shift+?BR>文本~辑?转至?Ctrl+L</P> <P><BR>搜烦<BR>作用?功能 快捷?BR>全局 出现在文件中 Ctrl+Shift+U<BR>全局 打开搜烦对话?Ctrl+H<BR>全局 工作Z的声?Ctrl+G<BR>全局 工作Z的引?Ctrl+Shift+G</P> <P>?<BR>文本~辑<BR>作用?功能 快捷?BR>文本~辑?改写切换 Insert<BR>文本~辑?上滚?Ctrl+?BR>文本~辑?下滚?Ctrl+?/P> <P>?<BR>文g<BR>作用?功能 快捷?BR>全局 保存 Ctrl+X<BR>Ctrl+S<BR>全局 打印 Ctrl+P<BR>全局 关闭 Ctrl+F4<BR>全局 全部保存 Ctrl+Shift+S<BR>全局 全部关闭 Ctrl+Shift+F4<BR>全局 属?Alt+Enter<BR>全局 新徏 Ctrl+N</P> <P><BR>目<BR>作用?功能 快捷?BR>全局 全部构徏 Ctrl+B</P> <P><BR>源代?BR>作用?功能 快捷?BR>Java~辑?格式?Ctrl+Shift+F<BR>Java~辑?取消注释 Ctrl+\<BR>Java~辑?注释 Ctrl+/<BR>Java~辑?d导入 Ctrl+Shift+M<BR>Java~辑?l织导入 Ctrl+Shift+O<BR>Java~辑?使用try/catch块来包围 未设|,太常用了Q所以在q里列出,自己讄?BR>也可以用Ctrl+1自动修正?/P> <P>?<BR>q行<BR>作用?功能 快捷?BR>全局 单步q回 F7<BR>全局 单步跌 F6<BR>全局 单步跛_ F5<BR>全局 单步跛_选择 Ctrl+F5<BR>全局 调试上次启动 F11<BR>全局 l箋 F8<BR>全局 使用qo器单步执?Shift+F5<BR>全局 d/去除断点 Ctrl+Shift+B<BR>全局 昄 Ctrl+D<BR>全局 q行上次启动 Ctrl+F11<BR>全局 q行臌 Ctrl+R<BR>全局 执行 Ctrl+U</P> <P><BR>重构<BR>作用?功能 快捷?BR>全局 撤销重构 Alt+Shift+Z<BR>全局 抽取Ҏ Alt+Shift+M<BR>全局 抽取局部变?Alt+Shift+L<BR>全局 内联 Alt+Shift+I<BR>全局 Ud Alt+Shift+V<BR>全局 重命?Alt+Shift+R<BR>全局 重做 Alt+Shift+Y</P><img src ="http://www.aygfsteel.com/ranxiang/aggbug/35121.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ranxiang/" target="_blank">冉翔</a> 2006-03-13 20:00 <a href="http://www.aygfsteel.com/ranxiang/articles/35121.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[阅读W记]单元试之道Java?-----使用JUnit------(2) 试哪些内容QRight-BICEPhttp://www.aygfsteel.com/ranxiang/articles/32364.html冉翔冉翔Fri, 24 Feb 2006 17:52:00 GMThttp://www.aygfsteel.com/ranxiang/articles/32364.htmlhttp://www.aygfsteel.com/ranxiang/comments/32364.htmlhttp://www.aygfsteel.com/ranxiang/articles/32364.html#Feedback0http://www.aygfsteel.com/ranxiang/comments/commentRss/32364.htmlhttp://www.aygfsteel.com/ranxiang/services/trackbacks/32364.htmlW?/span>4?/span> 试哪些内容Q?/span>Right-BICEP

 

4.1 l果是否正确 Right-BICEP

如果代码能够q行正确Q我要怎么才知道它是正的?/span>

  如果你不能很好地回答q个问题Q那么编写代码——或者测试——完全就是在费旉?/span>

  在代码的整个生命期中Q“正”的定义可能会不断在变;但是无论如何Q你臛_需要确认代码所做的和你的期望是一致的?/span>

·使用数据文g

  对于许多有大量测试数据的试Q你可能会考虑用一个独立的数据文g来存储这些测试数据,然后让单元测试读取该文g?/span>

 

  多注意一下测试数据。经验告诉我们,试数据比代码更有可能是错的Q特别是人工计算的,或者来自原有系l计结果的试数据。因此,当测试数据显C有错误发生的时_你应该在怀疑代码前先对试数据查两三遍?/span>

 

  一个原则是Q对于验证被方法是正确的这件事情,如果某些做法能够使它变得更加ҎQ那么就采纳它吧?/span>

 

4.2 边界条g Right-BICEP

找边界条件是做单元测试中最有h值的工作之一Q因?/span>bug一般就出现在边界上。一些需要你考虑得条件有?/span>

·完全伪造或者不一致的输入数据Q例如一个名为?/span>!*W:X\&Gi/w~>g/h#WQ@”的文g?/span>

·格式错误的数据,例如没有层域名的电子邮件地址像fred@foobarq样的?/span>

·控制或者不完整的|?/span>0, 0.0, “?/span>?/span>nullQ?/span>

·一些与意料中的合理值相ȝq的数倹{例如一个h的岁Cؓ10000岁?/span>

·如果要求的是一个不允许出现重复数值的listQ但是传入的是一个存在重复数值的list?/span>

·如果要求的是一个有?/span>listQ但是传入的是一个无序的listQ或者反之。例如,l一个要求排好序的算法传入一个未排序?/span>list——甚至一个反序的list?/span>

·事情到达的次序是错误的,或者碰巧和期望的次序不一致。例如,在未dpȝ之前Q就试打印文档?/span>

 

一个向导可能的边界条gCORRECT。对于其中的每一条,都应该想惛_是否与存在于被测Ҏ中的某个条g非常cMQ而当q些条g被违反的Ӟ出现的又是什么情c?/span>

·ConformanceQ一致性)——值是否和预期的一致?/span>

·OrderingQ顺序性)——值是否如应该的那P是有序或者无序的?/span>

·RangeQ区间性)——值是否位于合理的最值和最大g内?/span>

·ReferenceQ依赖性)——代码是否引用了一些不再代码本w控制范围之内的外部资源?/span>

·ExistenceQ存在性)——值是否存在(例如Q是否是?/span>nullQ非0Q再一个集合中{等Q?/span>

·CardinatityQ基数性)——是否恰好有_的|

·TimeQ相Ҏ者绝对的旉性)——所有事情的发生是否是有序的Q是否是在正的时刻Q是否恰好及Ӟ

 

 

4.3 查反向关?/span> Right-BICEP

  对于一些方法,我们可以使用反向的逻辑关系来验证它们?/span>

 

要注意的是:当你同时~写了原Ҏ和它的反向测试时Q一?/span>bug可能会被在两个函C都出现的错误所掩盖。在可能的情况下Q应该用不同的原理来编写反向测试?/span>

 

 

4.4 使用其他手段来实C叉检?/span> Right-BICEP

通常而言Q计一个量会有一U以上的法。我们可能会Zq行效率或者其他的Ҏ,来选择法。那是我们要在品中使用的;但是在测试用的系l中Q可以用剩下算法中的一个来交叉试l果。当实存在一U经q验证ƈ能完成Q务的法Q只是由于速度太慢或者太不灵z而没有在产品代码中用,q种交叉查的技术将非常有效?/span>

 

另一U办法就是:使用cLw不同组成部分的数据Qƈ且确信它们能和“合h”?/span>

 

 

4.5 强制产生错误条g Right-BICEP

在真实世界中Q错误L会发生:盘会慢Q网l连U会断开Q电子邮件会多的像掉q了黑洞Q而程序会崩溃。你应当能够通过强制引发错误Q来试你的代码是如何处理所有这些真实世界中的问题的?/span>

 

4.6 性能Ҏ?/span> Right-BICEP

一个检查v来会很有益处的部分是性能Ҏ,而不是性能本n?/span>

 

你也讔R要一些测试辅助工兗它们嫩构提供对单个试q行计时Q模拟告负在情况之类的功能,比如免费?/span>JUnitPerf?/span>



冉翔 2006-02-25 01:52 发表评论
]]>
[阅读W记]单元试之道Java?-----使用JUnit------(1) 序言&使用JUnit~写试http://www.aygfsteel.com/ranxiang/articles/32310.html冉翔冉翔Fri, 24 Feb 2006 08:45:00 GMThttp://www.aygfsteel.com/ranxiang/articles/32310.htmlhttp://www.aygfsteel.com/ranxiang/comments/32310.htmlhttp://www.aygfsteel.com/ranxiang/articles/32310.html#Feedback0http://www.aygfsteel.com/ranxiang/comments/commentRss/32310.htmlhttp://www.aygfsteel.com/ranxiang/services/trackbacks/32310.html单元试之道Java?/span>------使用JUnit------

 

W?/span>1?/span> 序言

 

·什么是单元试

单元试是开发者编写的一段代码Q用于检验被代码的一个很的、很明确的功能是否正。通常而言Q一个单元测试是用于判断某个特定条gQ或者场景)下某个特定函数的行ؓ?/span>

 

·Z么要使用单元试

单元试不但会你的工作完成得更LQ而且会o你的设计变得更好。甚臛_大减你花在调试上面的时间?/span>

 

·不写试的借口

~写单元试太花旉?/span>

q行试的时间太长了

试代码q不是我的工?/span>

我ƈ不清楚代码的行ؓQ所以也无从测?/span>

但是q些代码都能够编译通过

公司h来试我是Z写代码,而不是写试

如果我让试员或?/span>QA人员没有工作Q那么我会觉得很内疚

我的公司q不会让我在真实pȝ中运行单元测?/span>

 

W?/span>3?/span> 使用JUnit~写试

 

3.1 构徏单元试

  试代码必须要做以下几g事情Q?/span>

·准备试所需要的各种条gQ创建所有必ȝ对象Q分配必要的资源{等Q?/span>

·调用要测试的Ҏ?/span>

·验证被测试方法的行ؓ和期望是否一致?/span>

·完成后清理各U资源?/span>

 

3.2 JUnit的各U断a

  JUnit提供了一些辅助函敎ͼ用于帮助你确定某个被试函数是否工作正常。通常而言Q我们把所有这些函数统UCؓ断言。断a是单元测试最基本的组成部分?/span>

  当一个失败或错误出现的时候,当前试Ҏ的执行流E将会被U植Q但是(位于同一个测试类中的Q其他测试将会l运行?/span>

 

 · assertEquals

assertEquals([String message],

expected,

actual)

 

q是使用得最多的断言形式。在上面的参CQ?/span>expected是你的期望|通常都是编码的Q,actual是被试代码实际产生的|message是一个可选的消息Q如果提供的话,会在发生错误的时候报告这个消息。当Ӟ你完全可以不提供q个message参数Q而只提供expected?/span>valueq两个倹{?/span>

M对象都可以拿来做相等性测试:适当的相{性判断方法会被用来做q样的比较。值得注意的是使用原生数组?/span>equalsҎӞ它ƈ不是比较数组的内容,而只是比较数l引用本w,而这大概不是你希望的吧?/span>

计算机ƈ不能_地表C所有的点敎ͼ通常都会有一些偏差。因而,如果你想用断a来比较QҎQ在Java中,是类型ؓfloat或?/span>double的数Q,则需要制定一个额外的误差参数。它表明你需要多接近才能认ؓ两数“相{”?/span>

assertEquals([String message],

expected,

actual,

tolerance)

 

 

·assertNull

assertNull([String message], java.lang.Object object)

assertNotNull([String message], java.lang.Object object)

 

验证一个给定的对象是否?/span>nullQ或者ؓ?/span>nullQ,如果{案为否Q则会p|?/span>message参数是可选的?/span>

 

 

·assertSame

assertSame([String message], expected, actual)

 

验证expected参数?/span>actual参数所引用的是否ؓ同一个对象,如果不是的话Q将会失败?/span>message参数是可选的?/span>

 

assertNotSame([String message], expected, actual)

 

验证expected参数?/span>actual参数所应用的是否ؓ不同的对象,如果是相同的话,会p|?/span>message参数是可选的?/span>

 

 

·assertTrue

assertTrue([String message], Boolean condition)

 

验证l定的二元条件是否ؓ真,如果为假的话Q将会失败?/span>meesage参数是可选的?/span>

如果你发现测试代码像下面q样Q宛如废话一般:

asserTrue(true);

那么你就该好好想惌些代码了。对于这U写法,除非是被用于认某个分支Q或者一场逻辑才有可能是正的选择Q否则的话,很可能就是一个糟p的L?/span>

 

assertFalse([String message], Boolean condition)

上面的代码用于验证给定的二元条g是否为假。如果不是的话,该测试将会失败?/span>

 

 

·fail

fail([String message])

上面的断a会使测试立卛_败,其中message参数是可选的。这U断a通常被用于标记某个不应该被到辄分支Q譬如,在一个与预期发生的异怹后)?/span>

 

 

·使用断言

一般而言Q一个测试方法会包含有多个断aQ因Z需要验证该Ҏ的多个方面以及内在的多种联系?/span>

当有试p|的时候,无论如何都不能给原有代码再添加新的特性!此时你应该尽快地修复q个错误Q直到让所有的试都能利通过?/span>

 

 

3.3 JUnit框架

每个包含试的类都必d所C那LTestCasel承而来。基c?/span>TestCase提供了我们所需的大部分单元试功能Q包括所有在前面讲述q的断言Ҏ?/span>

基类需要一个以String为参数的构造函敎ͼ因而我们必调?/span>super以传递这么一个名字?/span>

试cd含了名ؓtest?/span>的方法。而所有以test开头的Ҏ都会?/span>JUnit自动q行。你q可以通过定义suiteҎ制定Ҏ的函数来q行?/span>

 

 

3.4 JUnit试的组?/span>

一个测试类包含一些测试方法;每个Ҏ包含一个或者多个断a语句。但是测试类也能调用其它试c:单独的类、包、甚臛_整的一个系l。可以通过创徏test suite来取得。Q何测试类都能包含一个名?/span>suite的静态方法?/span>

public static Test suite();

你可以提?/span>suite()Ҏ来返回Q何你惌的测试集合(没有suite()ҎQ?/span>JUnit会自动运行所有的test?/span>ҎQ。但是你可能需要手工添加特D的试Q包括其?/span>suite?/span>

 

 

· Per-method?/span>Setup?/span>Tear-down

JUnit?/span>TestCase基类提供两个Ҏ供你改写Q分别用于环境的建立和清理:

protected void setup();

protected void teardown();

 

 

· Per-suite Setup?/span>Tear-down

一般而言Q你只须针对每个Ҏ讄q行环境Q但是在某些情况下,你须为整?/span>test suite讄一些环境,以及?/span>test suite中的所有方法都执行完成后做一些清理工作。要辑ֈq种效果Q你需?/span>per-suite setup?/span>per-suite teardown?/span>

Per-suite?/span>setup要复杂一些。你需要提供所需试的一?/span>suiteQ无论通过什么样的方式)q且把它包装q一?/span>TestSetup对象?/span>

注意你可以在同一个类中同时?/span>per-sutie?/span>per-test?/span>setup()?/span>teardown?/span>

 

 

3.5 自定?/span>JUnit断言

如果你有需要在整个目中共享的断言或者公׃码,你也讔R要考虑?/span>TestCasel承一个类q且使用q个字类来进行所有的试?/span>

事实上,开始新目时L从自q自定义基cȝ承而不直接?/span>JUnit的类l承通常是一个好L——即便你的基cd一开始没有添加Q何额外的功能。这样做的好处是当你需要添加一个所有测试类都需要的Ҏ或者能力时Q可以简单地~辑你的基类而不需要改动项目中的所?/span>test case?/span>

 

 

3.6 JUnit和异?/span>

对于试而言Q下面两U异常是我们可能会感兴趣的:

1Q?span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  从测试代码抛出的可预异常?/span>

2Q?span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  ׃某个模块Q或代码Q发生严重错误,而抛出的不可预测异常?/span>

 

M?/span>assertTrue(true)的用都应该被翻译ؓ“我预期控制程会达到这个地方”。这对将来可能的误解来说会v到强有力的文档的作用。然而,不要忘记一?/span>assertTrue(true)没有被调用不会生Q何错误的?/span>

通常而言Q对于方法中每个被期望的异常Q你都应该写一个专门的试来确认该Ҏ在应该抛出异常的时候确实会抛出异常?/span>

对于处于Z意料的异常,你最好简单的改变你的试Ҏ的声明让它能抛出可能的异常?/span>JUnit框架可以捕获M异常Qƈ且把它报告ؓ一个错误,q些都不需要你的参与?/span>

 

 

3.7 关于命名的更多说?/span>

如果~写了一个测试,但是实现代码q没有准备好Q可以将以?/span>test”打头的试Ҏ名米功能为别的,譬如把?/span>test”去掉,然后{准备好了要来运行测试的时候再改回来?/span>

无论如何Q你要避免养成忽略“失败的试l果”的习惯?/span>

 

 

3.8 JUnit试骨架

?/span>JUnit写测试真正所需要的׃件事Q?/span>

1Q?span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  一?/span>import语句引入所?/span>junit.framework.*下的cR?/span>

2Q?span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  一?/span>extends语句让你的类?/span>TestCasel承?/span>

3Q?span style="font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">  一个调?/span>super(string)的构造函数?/span>



冉翔 2006-02-24 16:45 发表评论
]]>
我收集的Eclipse及相x件的资料Q持l完善INGQ?/title><link>http://www.aygfsteel.com/ranxiang/articles/23157.html</link><dc:creator>冉翔</dc:creator><author>冉翔</author><pubDate>Fri, 09 Dec 2005 07:41:00 GMT</pubDate><guid>http://www.aygfsteel.com/ranxiang/articles/23157.html</guid><wfw:comment>http://www.aygfsteel.com/ranxiang/comments/23157.html</wfw:comment><comments>http://www.aygfsteel.com/ranxiang/articles/23157.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ranxiang/comments/commentRss/23157.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ranxiang/services/trackbacks/23157.html</trackback:ping><description><![CDATA[<P>我收集的Eclipse及相x件的资料Q持l完善INGQ?/P> <P>Eclipse官方主页Q?A >http://www.eclipse.org</A></P> <P><BR>MyeclipseQ一个基于Eclipse的很全面好用的J2EE开发^収ͼ需付费使用Q?BR>主页Q?A >http://www.myeclipseide.com</A></P> <P><BR>VE EditorQ图形化的开发GUI界面的插件?BR>主页Q?A >http://www.eclipse.org/vep/</A><BR>     先决条g是安装EMF和GET?BR>         EMFQ?A >http://www.eclipse.org/emf/</A><BR>         GEFQ?A >www.eclipse.org/gef/</A></P> <P><BR>XMLBuddyQ很不错的开发XML插g?BR>主页Q?A >http://xmlbuddy.com</A></P> <P><BR>LombozQ开发J2EE首选插件?BR>主页Q?A >http://www.objectlearn.com/</A></P> <P><BR>sysdeo Tomcat PluginQ一个方便实用的tomcat插g?BR>主页Q?A >http://www.sysdeo.com/eclipse/tomcatPlugin.html</A></P> <P><BR>UML2Q一个支持UML开发的插g?BR>主页Q?A >http://www.eclipse.org/uml2/</A><BR>        先决条g是安装EMF?BR>        EMFQ?A >http://www.eclipse.org/emf/</A></P> <P><BR>Easy StrutsQ开发struts的插件?BR>主页Q?A >http://easystruts.sourceforge.net/</A></P> <P><BR>JIntoQ开发资源文件的一个插件?BR>主页Q?A >http://www.guh-software.de/jinto_en.html</A></P> <P><BR>KeePresidentQ加快Eclipse速度的插件。(仅适用于Windowsq_Q?BR>主页Q?A >http://suif.stanford.edu/pub/keepresident/</A></P> <P><BR>JBossIDEQ在JBOSS服务器上的开发J2EE的插件?BR>主页Q?A >http://www.jboss.com/products/jbosside</A></P> <P> </P> <P><BR>如果想采取link方式安装插gQ可看这文章(<A >点击q里</A>Q?BR>一些介leclipse插g使用的地方(<A >点击q里</A>Q?/P> <P>你有什么好用的插g吗?留言告诉我,大家一起分享吧Q)<BR></P><img src ="http://www.aygfsteel.com/ranxiang/aggbug/23157.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ranxiang/" target="_blank">冉翔</a> 2005-12-09 15:41 <a href="http://www.aygfsteel.com/ranxiang/articles/23157.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Myeclipse插g启动app server遇到的JDK name的怪问题以及解军_法?/title><link>http://www.aygfsteel.com/ranxiang/articles/23158.html</link><dc:creator>冉翔</dc:creator><author>冉翔</author><pubDate>Fri, 09 Dec 2005 07:41:00 GMT</pubDate><guid>http://www.aygfsteel.com/ranxiang/articles/23158.html</guid><wfw:comment>http://www.aygfsteel.com/ranxiang/comments/23158.html</wfw:comment><comments>http://www.aygfsteel.com/ranxiang/articles/23158.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ranxiang/comments/commentRss/23158.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ranxiang/services/trackbacks/23158.html</trackback:ping><description><![CDATA[ <!--StartFragment --> 症状描述Q用MyEclipse插g启动app serverQtomcat, jboss, sun one serverQ。均报错Q提C我JDK nameq个错误。百思不得其解,eclipse下的configuration文g夹内容删除,发现好用了。但是后来又不好用了Q反反复复折腾了很久。终于发C问题的根本?br /><br />原来我机器上的JDK好像?.5.01的,q次重做pȝQ换?.5.03的了。然后我在开启eclipse选择~省路径的时候,如果选择的是我以前用 eclipse开发项目用的\径的时候,因ؓq个路径包含一下以前的一些eclipse配置或者jdk版本的一些信息,造成上面所q的JDK nameq个错误。如果我在这里选择一个干净的新的目录。那么就一切正怺。我说怎么一会好用一会不好用Q原来就是这个开始时候选择目录的问题?br /><br />解决办法Q?br /><br />在MyEclipse的配|下面的App Server配置的tomcatQ有个选择JDK的,有时候会自动变成JREQ换成JDK的目录就可以了?br /><br /><br />之后Q就不会出现JDK name的错误了。可以通过myeclipse的插件正常的start和shutdown了?br /><br /><br /><br />后记Q很郁闷的因个事情,L了差不多一天的旉。而且eclipseQMyeclipse以及各种插gQ是装了又删删了又装的,最后才惛_q一炏V有点笨了。以后一定要加强自己分析问题的思\斚w的办法?<img src ="http://www.aygfsteel.com/ranxiang/aggbug/23158.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ranxiang/" target="_blank">冉翔</a> 2005-12-09 15:41 <a href="http://www.aygfsteel.com/ranxiang/articles/23158.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一点心得:关于用myeclipse在struts-config.xml中配|datasource的注意事?/title><link>http://www.aygfsteel.com/ranxiang/articles/23155.html</link><dc:creator>冉翔</dc:creator><author>冉翔</author><pubDate>Fri, 09 Dec 2005 07:39:00 GMT</pubDate><guid>http://www.aygfsteel.com/ranxiang/articles/23155.html</guid><wfw:comment>http://www.aygfsteel.com/ranxiang/comments/23155.html</wfw:comment><comments>http://www.aygfsteel.com/ranxiang/articles/23155.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ranxiang/comments/commentRss/23155.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ranxiang/services/trackbacks/23155.html</trackback:ping><description><![CDATA[<P> <BR>我想q算个BUG吧?/P> <P> </P> <P>直接在struts-config.xml中右键data-sources然后New?/P> <P>默认的type是:</P> <P>org.apache.struts.util.GenericDataSource</P> <P>struts自带的一个数据库q接池?/P> <P>然后正确输入各种property的value?/P> <P>试Q好用?/P> <P> </P> <P>如果type选择为:</P> <P>org.apache.commons.dbcp.BasicDataSource</P> <P>q个DBCP的数据库q接池?/P> <P>然后键入正确的value?/P> <P>试Q提C各U异?amp;找不到Driver?/P> <P> </P> <P>查看DBCP的文档,发现MYECLIPSE生成的配|XML元素有问题?/P> <P>DBCP需要的是driverClassName和usernameq两个propertys?/P> <P>而Myeclipse自动生成的是driverClass和userq两个propertys?/P> <P> </P> <P>改过来之后发现DBCP的数据库q接池也好用了:Q?/P> <P>q应该算是MYECLIPSE开发struts的一个BUG吧,数据库连接池的配|是按照struts默认的GenericDataSource来的。如果能动态的在选择数据库连接池的时候,扑֯set()/get()Ҏ来生成属性的名字应该更好?/P> <P>也看出来不同的数据库q接池在命名规则斚w存在的一些差异?/P> <P>其实很简单的东西Q我却花费了半天的时_原因是我太相信工具了Q以为生成的东西一定是正确的,所以一直在x不是别的斚w出错了。得到这ơ教训之后,要更加清晰的对工h怀疑态度了。不能太q相信和依靠Q还是自己对q些技术的了解最重要?/P> <P> </P> <P>PSQTOMCAT有自带DBCP。不q我是自׃jakarta上面下的commons dbcp攑ֈ自己的lib里面的,当然Q官方doc上面有这L说明Q?/P> <P>Commons-DBCP depends at runtime on commons-pool and commons-collections . </P> <P>所以记得要把这两项也下回来和dbcp的jar文g一hqlib才能保证不出错?/P> <P>MQ认真+心细Q才能更好的解决问题?/P> <P> </P> <P> </P> <P>本文环境Q?BR>Win2003  + jdk1.5.0_01<BR>Tomcat 5.5 +  MySql4.1<BR>Eclipse 3.0.1 + Myeclipse 3.8.4</P> <P>本文提到的一些Y件的下蝲地址Q?/P> <P>J2SE 5.0QSUN弄的q些׃八糟的名字真讨厌Q؜q感觉Q:<BR><A >http://java.sun.com/j2se/1.5.0/download.jsp</A></P> <P>TomcatQ?BR><A >http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgi</A></P> <P>MySql4.1Q?BR><A >http://dev.mysql.com/downloads/</A></P> <P>EclipseQ?BR><A >http://www.eclipse.org/downloads/index.php</A></P> <P>Jakarta commonsQDBCP和其所需要的commons pool和commons collections都是在这里下Q:<BR><A >http://jakarta.apache.org/site/downloads/downloads_commons.html</A><BR></P><img src ="http://www.aygfsteel.com/ranxiang/aggbug/23155.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ranxiang/" target="_blank">冉翔</a> 2005-12-09 15:39 <a href="http://www.aygfsteel.com/ranxiang/articles/23155.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ľ</a>| <a href="http://" target="_blank">Һ</a>| <a href="http://" target="_blank">㺺</a>| <a href="http://" target="_blank">ޭ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">üɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͬ</a>| <a href="http://" target="_blank">ƺ</a>| <a href="http://" target="_blank">괨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">κ</a>| <a href="http://" target="_blank">ʱ</a>| <a href="http://" target="_blank">ع</a>| <a href="http://" target="_blank">ƴ</a>| <a href="http://" target="_blank">ȫ</a>| <a href="http://" target="_blank">̩</a>| <a href="http://" target="_blank">޻</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">۰</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯ¥</a>| <a href="http://" target="_blank">żҸ</a>| <a href="http://" target="_blank">ͷ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʩ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>