﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Jiangshachina-随笔分类-NetBeans</title><link>http://www.blogjava.net/jiangshachina/category/23790.html</link><description>同是Java爱好者，相逢何必曾相识！&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;a cup of Java, cheers!</description><language>zh-cn</language><lastBuildDate>Thu, 31 Dec 2009 18:07:35 GMT</lastBuildDate><pubDate>Thu, 31 Dec 2009 18:07:35 GMT</pubDate><ttl>60</ttl><item><title>高效调试：条件化断点(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2009/12/31/307852.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Thu, 31 Dec 2009 02:49:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2009/12/31/307852.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/307852.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2009/12/31/307852.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/307852.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/307852.html</trackback:ping><description><![CDATA[<div align="center"><span style="font-size: 10pt;"><strong><span style="font-size: 14pt;">高效调试：条件化断点</span></strong></span><br />
</div>
<span style="font-size: 10pt;">本文是<a href="http://java.dzone.com/">JavaLobby</a>上的一篇<a href="http://java.dzone.com/tips/effective-debugging">博文</a>，介绍了一个使用Eclipse和NetBeans进行调试的小窍门，我受益良多，也希望对大家有所助益。(2009.12.31最后更新)<br />
<br />
最重要的开发者工作之一就是调试。在我的大学时代，我们被迫使用简单的文本编辑器开发软件，所以开始时，我使用打印语句来观察程序在什么地方出错了。现在，IDE使我们能很便捷地完成这一工作。...<br />
我在Eclipse和NetBeans中见过的最佳特性就是条件化断点思想。这个想法很简单，打上断点，然后输入使调试线程能够停在该断点处的条件。例如，若有如下代码：<br />
</span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">for</span><span style="color: #000000;">(Employee&nbsp;emp:&nbsp;employees)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(emp.getType()&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;Employee.MANAGER)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addToManagers(emp);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</span></div>
<span style="font-size: 10pt;"><br />
假设，当雇员的getType方法的值为Employee.DEVELOPER时，我想察看所有变量的值，并在单步调试时能确保不会进入IF语句块。<br />
在Eclipse中，你可一如往常那样在IF语句中设置断点，右键点击断点，你将看到如下菜单：<br />
<img src="http://java.dzone.com/sites/all/files/eclipse_breakpoint.PNG" alt="" /><br />
<br />
通过勾选Enable Condition复选框，你可以在结果对话框中为该断点设置一个条件：<br />
<img src="http://java.dzone.com/sites/all/files/eclipse_dialog.PNG" alt="" /><br />
<br />
当你键入条件时，你能获得完全的内容提示。你也能改变条件的意义--当该条件为真时，或者当在最近一次遍历之后值被改变时，是否需要停止。<br />
对于NetBeans，也十分的相似。你仍要右键点击断点以获得属性菜单：<br />
<img src="http://java.dzone.com/sites/all/files/netbeans_breakpoint.PNG" alt="" /><br />
<br />
该对话框也有熟悉的条件，命中次数和内容提示：<br />
<img src="http://java.dzone.com/sites/all/files/netbeans_dialog.PNG" alt="" /><br />
<br />
像这样的特性才能真正地帮助你提升调试的效率--当你知道某个特定的值导致了程序失败时，你就能直捣问题的核心了。<br />
<br />
<strong><span style="color: red;"><span style="font-size: 12pt;">祝大家新年愉快 :-D</span></span></strong><br />
<br />
</span>
<img src ="http://www.blogjava.net/jiangshachina/aggbug/307852.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2009-12-31 10:49 <a href="http://www.blogjava.net/jiangshachina/archive/2009/12/31/307852.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NetBeans vs. Eclipse RCP: 插件机制比较(译)</title><link>http://www.blogjava.net/jiangshachina/archive/2008/10/15/234341.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Wed, 15 Oct 2008 06:40:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2008/10/15/234341.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/234341.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2008/10/15/234341.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/234341.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/234341.html</trackback:ping><description><![CDATA[<div align="center"><span style="font-size: 10pt;"><span style="font-size: 14pt;"><strong>NetBeans vs. Eclipse RCP: 插件机制比较</strong></span></span><br />
<span style="font-size: 10pt;"><strong></strong></span></div>
<span><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; 本文是<a href="http://java.dzone.com/">JavaLobby</a>上的<a href="http://java.dzone.com/articles/netbeans-vs-eclipse-rcp-plugin">一篇小文</a>，作者对NetBeans和Eclipse的插件机制进行了一些比较，如有兴趣，可以看看。(2008.10.15最后更新)<br />
<br />
NetBeans与Eclipse处理扩展点及扩展的方式是不同的。让我们看看这些不同之处。请注意，本文仅针对那些对这两个平台的插件机制都具备相当知识的人。</span><br />
<br />
<strong style="font-size: 10pt;">NetBeans Platform:</strong><br />
</span>
<table bgcolor="#000000" border="0" cellpadding="1" cellspacing="1" width="686" height="56">
    <tbody>
        <tr style="background-color: #ffffff;">
            <td style="width: 100px; height: 15px;"><span style="font-size: 10pt;">定义扩展点</span></td>
            <td><span style="font-size: 10pt;">创建一个接口，并将它置入一个公共模块包中。</span></td>
        </tr>
        <tr style="background-color: #ffffff;">
            <td><span style="font-size: 10pt;">创建扩展</span></td>
            <td style="width: 573px; height: 21px;"  &="" gt;=""><span style="font-size: 10pt;">创建上述接口的实现，并通过layer.xml文件将它注册到虚拟文件系统中。</span></td>
        </tr>
        <tr style="background-color: #ffffff;">
            <td><span style="font-size: 10pt;">读取可用的扩展 </span></td>
            <td><span><span style="font-size: 10pt;">使用<a href="http://bits.netbeans.org/dev/javadoc/org- openide-util/org/openide/util /Lookup.html">org.openide.util.Lookup</a>类去获取上述接口实现的实例。</span><br />
            </span></td>
        </tr>
    </tbody>
</table>
<br />
<span style="font-size: 10pt;"><strong style="font-size: 12pt;"><span style="font-size: 10pt;"><strong>Eclipse RCP:</strong></span><br />
</strong></span>
<table bgcolor="#000000" border="0" cellpadding="2" cellspacing="1" width="876" height="129">
    <tbody>
        <tr style="background-color: #ffffff;">
            <td style="width: 100px; height: 15px;"><span style="font-size: 10pt;">定义扩展点</span></td>
            <td><span style="font-size: 10pt;">创建一个扩展点的描述符方案，该方案定义了扩展点的元素与属性，以及这些元素之间的关系。<br />
            可用的属性类型为：boolean，string，java，resource和identifer。可向该方案的任何部分添加文档。<br />
            最后，向plugin.xml文件 注册你的扩展点。</span></td>
        </tr>
        <tr style="background-color: #ffffff;">
            <td><span style="font-size: 10pt;">创建扩展</span></td>
            <td><span><span style="font-size: 10pt;">根据上述方案，在plugin.xml文件中创建一个子部分，在此处向属性赋予值。如果属性类型为java，则也要创建被引用的Java类。</span></span></td>
        </tr>
        <tr style="background-color: #ffffff;">
            <td><span style="font-size: 10pt;">读取可用的扩展</span></td>
            <td><span><span style="font-size: 10pt;">使用<a href="http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/runtime_registry.htm">org.eclipse.core.runtime.IExtensionPoint</a>获取扩展的列表。从每个<em><a href="http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime/IExtension.html">扩展</a></em>中获取<a href="http: //help.eclipse.org/ganymede/index.jsp?topic= /org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime /IConfigurationElement.html">IConfigurationElement</a>的列表：<br />
            每个IConfigurationElement对应于plugin.xml文件中的一个XML标签。</span></span></td>
        </tr>
    </tbody>
</table>
<br />
<table style="width: 1019px; height: 186px;" bgcolor="#000000" border="0" cellpadding="2" cellspacing="1" width="1019" height="186">
    <tbody>
        <tr style="background-color: #ffffff;">
            <td colspan="2" style="width: 100px; height: 15px;"><span style="font-size: 10pt;"><strong>NetBeans平台</strong></span></td>
            <td colspan="2"><span style="font-size: 10pt;"><strong>Eclipse RCP</strong></span></td>
        </tr>
        <tr style="background-color: #ffffff;">
            <td><span style="font-size: 10pt;">优点</span></td>
            <td><span style="font-size: 10pt;">缺点</span></td>
            <td><span style="font-size: 10pt;">优点</span></td>
            <td><span style="font-size: 10pt;">缺点</span></td>
        </tr>
        <tr style="background-color: #ffffff;">
            <td><span style="font-size: 10pt;">非常简单，易于学习</span></td>
            <td><span style="font-size: 10pt;">扩展点没有定义它自己：没有关于是哪个公共模块接口作为扩展点使用的信息。</span></td>
            <td><span><span style="font-size: 10pt;">扩展点清晰地定义了它自己：快速查看jar文件，你就能立即知道该插件提供了哪些扩展点，以及它们是由哪些元素组成的。</span></span></td>
            <td><span style="font-size: 10pt;">比较复杂，需要更多时间去学习</span></td>
        </tr>
        <tr style="background-color: #ffffff;">
            <td><br />
            </td>
            <td><span style="font-size: 10pt;">使用的查找名也未作定义</span></td>
            <td><span style="font-size: 10pt;">有许多属性类型：可以在XML文件中描述特定的结果。</span></td>
            <td><br />
            </td>
        </tr>
        <tr style="background-color: #ffffff;">
            <td><br />
            </td>
            <td><span style="font-size: 10pt;">扩展和其它的内容都混写在layer.xml文件中：难以确定该模块用于哪些扩展。</span></td>
            <td><span style="font-size: 10pt;">可生成扩展的多数组成部分，见PDE。</span></td>
            <td><br />
            </td>
        </tr>
        <tr style="background-color: #ffffff;">
            <td><br />
            </td>
            <td><br />
            </td>
            <td><span style="font-size: 10pt;">定义好了文档的位置。</span></td>
            <td><br />
            </td>
        </tr>
    </tbody>
</table>
<br />
<img src ="http://www.blogjava.net/jiangshachina/aggbug/234341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2008-10-15 14:40 <a href="http://www.blogjava.net/jiangshachina/archive/2008/10/15/234341.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NetBeans Hot Keys(摘)</title><link>http://www.blogjava.net/jiangshachina/archive/2007/03/30/107396.html</link><dc:creator>Sha Jiang</dc:creator><author>Sha Jiang</author><pubDate>Fri, 30 Mar 2007 01:20:00 GMT</pubDate><guid>http://www.blogjava.net/jiangshachina/archive/2007/03/30/107396.html</guid><wfw:comment>http://www.blogjava.net/jiangshachina/comments/107396.html</wfw:comment><comments>http://www.blogjava.net/jiangshachina/archive/2007/03/30/107396.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangshachina/comments/commentRss/107396.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangshachina/services/trackbacks/107396.html</trackback:ping><description><![CDATA[<div align="center">
<font size="3">
<strong><span style="font-size: 14pt;">NetBeans Hot Keys</span></strong>
</font>
<br />
</div>
<font size="2">&nbsp;&nbsp;&nbsp; 因为很喜欢Matisse构造Swing GUI的功能，所以开始使用NetBeans。但使用了一段时间之后，发现NetBeans原来也是那么的优秀。不久前(2007.03.22)NetBeans还获得了Jolt的最佳IDE大奖。&#8220;一个行将就木的IDE，似乎又复活了&#8221;。<br />
&nbsp;&nbsp;&nbsp; 这里所列出的NetBeans快捷键是从NetBeans一份文档中直接copy出来，放在这里方便查阅。(2007.03.30最后更新)<br />
<strong><br />
查找、搜索和替换</strong><br />
Ctrl-F3 搜索位于插入点的词<br />
F3/Shift-F3 在文件中查找下一个/上一个<br />
Ctrl-F/H 在文件中查找/替换<br />
Alt-F7 查找使用实例<br />
Ctrl-Shift-P 在项目中查找<br />
Alt-Shift-U 查找使用实例结果<br />
Alt-Shift-H 关闭搜索结果突出显示<br />
Alt-Shift-L 跳转列表中的下一个（所有文件）<br />
Alt-Shift-K 跳转列表中的上一个（所有文件）<br />
Ctrl-R 重新装入窗体<br />
Alt-U-U 将选定内容转换为大写<br />
Alt-U-L 将选定内容转换为小写<br />
Alt-U-R 对选定内容切换大小写<br />
<br />
<strong>在源代码中导航</strong><br />
Alt-Shift-O 转至类<br />
Alt-Shift-E&nbsp; 转至 JUnit 测试<br />
Alt-O 转至源代码<br />
Alt-G 转至声明<br />
Ctrl-B 转至超级实现<br />
Alt-K/Alt-L 后退/前进<br />
Ctrl-G 转至行<br />
Ctrl-F2&nbsp; 切换添加/删除书签<br />
F2/Shift-F2&nbsp; 下一个/上一个书签<br />
F12/Shift-F12 下一个/上一个使用实例/编译错误<br />
Ctrl-Shift-1/2/3 在&#8220;项目&#8221;/&#8220;文件&#8221;/&#8220;收藏夹&#8221;中选择<br />
Ctrl-[ 将插入记号移至匹配的方括号<br />
Ctrl-^ Ctrl-[（法语/比利时语键盘）<br />
<br />
<strong>用Java编码</strong><br />
Ctrl-I 覆盖方法<br />
Alt-Shift-F/I 修复全部/选定类的导<br />
Alt-Shift-W 以 try-catch 块围绕<br />
Ctrl-Shift-F 重新设置选定内容的<br />
Ctrl-D/Ctrl-T 左移/右移一个制表符<br />
Ctrl-Shift-T/D 添加/撤消注释行 ("//<br />
Ctrl-L/K 插入下一个/上一个匹<br />
Esc/Ctrl-空格键 关闭/打开代码完成<br />
Ctrl-M 选择下一个参数<br />
Shift-空格键 输入空格，不展开缩写<br />
Alt-F1/Shift-F1 显示/搜索 Javadoc<br />
Ctrl-Shift-M&nbsp; 提取方法<br />
Alt-U-G 将 &#8220;get&#8221; 放置到标识符前面<br />
Alt-U-S 将 &#8220;set&#8221; 放置到标识符前面<br />
Alt-U-I 将 &#8220;is&#8221; 放置到标识符前面<br />
Ctrl-Backspace/Del 删除上一个/当前词<br />
Ctrl-E 删除当前行<br />
Ctrl-J-S/E 开始/结束录制宏<br />
Ctrl-Shift-J&nbsp; 插入国际化字符串<br />
Ctrl-数字键盘上的 - 折叠（隐藏）代码块<br />
Ctrl-数字键盘上的 + 展开已折叠的代码块<br />
Ctrl-Shift-数字键盘上的 - 折叠所有代码块<br />
Ctrl-Shift-数字键盘上的 + 展开所有代码块<br />
Alt-Enter 显示建议/提示<br />
<br />
<strong>打开和切换视图</strong><br />
Ctrl-Shift-0 显示&#8220;搜索结果&#8221;窗口<br />
Ctrl-0 显示源代码编辑器<br />
Ctrl-1 显示&#8220;项目&#8221;窗口<br />
Ctrl-2 显示&#8220;文件&#8221;窗口<br />
Ctrl-3 显示&#8220;收藏夹&#8221;窗口<br />
Ctrl-4 显示&#8220;输出&#8221;窗口<br />
Ctrl-5 显示&#8220;运行环境&#8221;窗口<br />
Ctrl-6 显示&#8220;待做事项&#8221;窗口<br />
Ctrl-7 显示&#8220;导航&#8221;窗口<br />
Ctrl-Shift-7 显示&#8220;属性&#8221;对话框<br />
Ctrl-Shift-8 显示组件面板<br />
Ctrl-8 显示&#8220;版本控制&#8221;窗口<br />
Ctrl-9 显示&#8220;VCS 输出&#8221;窗口<br />
Shift-F4 显示&#8220;文档&#8221;对话框<br />
Alt-向左方向键 移动到左侧窗口<br />
Alt-向右方向键 移动到右侧窗口<br />
Ctrl-Tab (Ctrl-`) 在打开的文档之间切换<br />
Shift-Escape 最大化窗口（切换）<br />
Ctrl-F4/Ctrl-W 关闭当前选定的窗口<br />
Ctrl-Shift-F4 关闭所有窗口<br />
Shift-F10 打开上下文菜单<br />
<br />
<strong>编译、测试和运行</strong><br />
F9 编译选定的包或文件<br />
F11 生成主项目<br />
Shift-F11 清理并生成主项目<br />
Ctrl-Q 设置请求参数<br />
Ctrl-Shift-U 创建 JUnit 测试<br />
Ctrl-F6/Alt-F6 为文件/项目运行JUnit测试<br />
F6/Shift-F6 运行主项目/文件<br />
<br />
<strong>调试</strong><br />
F5 开始调试主项目<br />
Ctrl-Shift-F5 开始调试当前文件<br />
Ctrl-Shift-F6 开始为文件调试测试 (JU<br />
Shift-F5/Ctrl-F5 停止/继续调试会话<br />
F4 运行到文件中的光标位置<br />
F7/F8 步入/越过<br />
Ctrl-F7 步出<br />
Ctrl-Alt-向上方向键 转至被调用的方法<br />
Ctrl-Alt-向下方向键 转至调用方法<br />
Ctrl-F9 计算表达式的值<br />
Ctrl-F8 切换断点<br />
Ctrl-Shift-F8 新建断点<br />
Ctrl-Shift-F7 新建监视<br />
Ctrl-Shift-5 显示 HTTP 监视器<br />
Ctrl-Shift-0 显示&#8220;搜索结果&#8221;窗口<br />
Alt-Shift-1 显示&#8220;局部变量&#8221;窗口<br />
Alt-Shift-2 显示&#8220;监视&#8221;窗口<br />
Alt-Shift-3 显示&#8220;调用栈&#8221;窗口<br />
Alt-Shift-4 显示&#8220;类&#8221;窗口<br />
Alt-Shift-5 显示&#8220;断点&#8221;窗口<br />
Alt-Shift-6 显示&#8220;会话&#8221;窗口<br />
Ctrl-Shift-6 切换到&#8220;执行&#8221;窗口<br />
Alt-Shift-7 切换到&#8220;线程&#8221;窗口<br />
Alt-Shift-8 切换到&#8220;源&#8221;窗口</font>  
<img src ="http://www.blogjava.net/jiangshachina/aggbug/107396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangshachina/" target="_blank">Sha Jiang</a> 2007-03-30 09:20 <a href="http://www.blogjava.net/jiangshachina/archive/2007/03/30/107396.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>