﻿<?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-hengheng123456789-随笔分类-JAVA-Eclipse</title><link>http://www.blogjava.net/hengheng123456789/category/17305.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 07 Sep 2007 09:10:32 GMT</lastBuildDate><pubDate>Fri, 07 Sep 2007 09:10:32 GMT</pubDate><ttl>60</ttl><item><title>使用 Eclipse V3.3 保持代码干净(转)</title><link>http://www.blogjava.net/hengheng123456789/archive/2007/09/07/143328.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Fri, 07 Sep 2007 02:08:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2007/09/07/143328.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/143328.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2007/09/07/143328.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/143328.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/143328.html</trackback:ping><description><![CDATA[<p align="center">&nbsp; <span style="font-size: 10.5pt; font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">使用</span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> Eclipse V3.3 </span><span style="font-size: 10.5pt; font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">保持代码干净</span><br />
<br />
&nbsp; </p>
<p><a href="http://java.chinaitlab.com/Eclipse/727690_2.html">http://java.chinaitlab.com/Eclipse/727690_2.html</a></p>
<p align="center"><br />
</p>
<p>　干净、易于阅读的代码可以使不熟悉程序的开发人员快速完整地理解程序，从而使软件维护比其他方法更加有效。了解 Eclipse V3.3 中的新清理功能，Eclipse V3.3 比早期版本为开发人员提供了更多选项进行清理。</p>
<p><!--start RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--end RESERVED FOR FUTURE USE INCLUDE FILES--></p>
<p>　编写干净代码有助于其他开发人员阅读、理解和维护您编写的代码。但是，并不是所有人都赞成 &#8220;漂亮&#8221;、&#8220;精密&#8221; 或 &#8220;干净&#8221; 等定义。不同的开发人员拥有不同的风格和审美鉴赏力。到现在为止，Eclipse 通过少量修饰以一种简单的功能方式设定了导入代码的格式。Eclipse V3.3 中对这些操作进行了扩展，从而提供了更宽泛的清理功能级别。Eclipse V3.3 允许您清除代码、添加缺少的代码并应用某种编码样式。向导将帮助您配置清理设置并将其存储起来以供稍后使用。</p>
<p>　我们将讨论清理的基本概念并提供有助于保持代码干净的工具的概览。</p>
<p><a name="N10073"><span class="atitle"><strong>用配置文件管理清理配置</strong></span></a></p>
<p>　某个具体的清理配置被称为一个 <em>配置文件</em>。配置文件可以保存，这样您就可以将设置提供给其他人或把来自早期项目和其他人的设置应用到当前代码中。根据组织的编码约定，配置文件可以应用于所有的 Eclipse 项目，这样便可以在所有开发团队中获得相同的代码样式。</p>
<p>　Eclipse 首选项为配置文件提供了管理功能。配置文件可被创建、编辑和删除。您可以指定在工作区中全局使用的配置文件。当您第一次打开工作区首选项并浏览到 <strong>Java &gt; Code Style &gt; Clean Up</strong> 时，您将看到活动配置文件 Eclipse [built-in]。此内置配置文件已经过预先配置并且是随 Eclipse 一起交付的。内置配置文件有两个：Eclipse 和 Save Participant。这两个配置文件定义了两个最小限度的清理配置，可基本上删除不必要代码。您可以通过将它们设为活动配置文件来查看这些内置配置文件的设置。所有详细信息如详细信息区域所示。</p>
<p><br />
<a name="fig1"><strong>图 1. 内置的详细信息</strong></a><br />
<img height="506" alt="内置的详细信息" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101046927.jpg" width="572" border="1" /> <br />
<br />
</p>
<p>　现有配置文件可作为各类模板使用，并且可以扩展和定制这些模板。因此，从下拉式菜单中选择现有配置文件作为活动配置文件并单击 <strong>edit</strong>。内置配置文件不能更改。可以使用内置配置文件作为您自己的配置文件的基础或简单地将内置配置文件按原样应用到代码中。</p>
<p>　要创建您自己的配置文件，请单击 <strong>New</strong>。为配置文件命名并从下拉式菜单中选择现有配置文件进行初始化。取消选中 <strong>Open the edit dialog now</strong> 并单击 <strong>OK</strong>。</p>
<p><br />
<a name="fig2"><strong>图 2. 新建配置文件</strong></a><br />
<img height="233" alt="新建配置文件" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101054541.jpg" width="324" border="1" /> <br />
<br />
</p>
<p>　要共享配置文件，请使用导出功能。要打开配置文件，请单击 <strong>Edit</strong>，然后单击 <strong>Export</strong>。为配置文件命名，然后单击 <strong>OK</strong>，接下来就可以共享配置文件了。</p>
<p><br />
<a name="fig3"><strong>图 3. 导出配置文件</strong></a><br />
<img height="419" alt="新配置文件" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101056698.jpg" width="572" border="1" /> <br />
<br />
</p>
<p>　要将 XML 文件中的外部配置应用到项目中，必须先将其导入。在主清理首选项中单击 <strong>Import</strong>，选择文件，然后单击 <strong>OK</strong>。</p>
<p><span class="atitle">清理类型</span></p>
<p>　清理设置分为五个主要类别。每个类别都显示在相应选项卡中，选项卡由设置部分和预览部分构成。预览用于立即显示设置对代码的影响。尝试使用这些设置并观察预览中的代码发生怎样的变化，以了解每种更改将怎样影响您的代码。当您在主清理首选项中单击 <strong>Edit</strong>，或在创建新配置文件时选择 <strong>Open the edit dialog now</strong>，将弹出编辑所有这些设置的对话框。</p>
<p>　下面将讨论可用的设置及其优缺点。由于许多设置可以风格各异，因此将不提供任何推荐。注意，如果不选择具体选项，您的代码将保持键入时的样子。</p>
<p><a name="sidebars"><span class="smalltitle"><strong><font size="3">Code Style</font></strong></span></a></p>
<p>第一个选项卡用于处理编码样式并定义应当如何显示块、表达式和变量声明。</p>
<p><strong>Control statements</strong></p>
<p>选择　Use blocks in <code><font face="新宋体">if</font></code>, <code><font face="新宋体">while</font></code>, <code><font face="新宋体">for</font></code>, and <code><font face="新宋体">do</font></code> statements　可定义使用大括号的位置。大括号有助于提高代码可读性。使用大括号时更易于看出哪些内容属于同一个单元。在添加属于 <code><font face="新宋体">if</font></code> 或 <code><font face="新宋体">else</font></code> 条件的另一条语句时，还可以帮助避免错误。另一方面，大括号太多会使代码变得臃肿并可能使代码难于处理。<br />
<br />
选择 <strong>Convert for loops to enhanced</strong> 将使用 for 循环符号，这是由 Java&#8482; V5.0 引入的，用于减少代码。注意，此转换不具有向后兼容性。 </p>
<p><strong>Expressions</strong> </p>
<p>选择 <strong>Use parentheses around conditions</strong> 可定义使用圆括号的位置。对于圆括号，请参阅以上关于大括号的讨论。 </p>
<p><strong>Variable declarations</strong></p>
<p>选择 <strong>Use modifier 'final' where possible</strong> 可定义使用 <code><font face="新宋体">final</font></code> 关键字的位置。<code><font face="新宋体">final</font></code> 修饰符不但可用于声明不能更改的变量，而且还是强制永远设定私有字段的优秀选择。<code><font face="新宋体">final</font></code> 修饰符对于性能、健壮性和正确性至关重要。 </p>
<p><br />
<strong>图 4. 编码样式</strong><br />
<img height="479" alt="编码样式" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101059193.jpg" width="572" border="1" /> <br />
<br />
</p>
<p><span class="smalltitle"><strong><font size="3">Member Accesses</font></strong></span></p>
<p>第二个选项卡允许您定义应当怎样访问类型成员。</p>
<p><strong>Non static accesses</strong></p>
<p>需要使用 <code><font face="新宋体">this</font></code> 限定词访问字段或方法时选中该选项。<code><font face="新宋体">this</font></code> 限定词帮助您快速查看哪些字段或方法是正在编写的当前类的成员。它可以帮助您区分使用同一名称的字段和局部变量。 </p>
<p><strong>Static accesses</strong></p>
<p>使用复选框来定义限定设置。可以通过声明类限定静态成员访问以更好地识别定义该成员的类型。另一方面，长类名可能使简单的成员访问变得臃肿并且使成员访问看上去不具有可读性或跨度多行代码。 </p>
<p><br />
<strong>图 5. 成员访问</strong><br />
<img height="479" alt="成员访问" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101110424.jpg" width="572" border="1" /> <br />
<br />
</p>
<p><span class="smalltitle"><strong><font size="3">Unnecessary Code</font></strong></span></p>
<p>第三个选项卡允许您为删除未使用的代码和多余代码指定设置。</p>
<p><strong>Unused code</strong></p>
<p>使用第一个复选框可以删除未使用的导入。如果不使用 <strong>Organize imports</strong> 或 <strong>Strg+Shift+o</strong> 组合键，则这样自动删除不使用的导入将帮助您使项目保持尽可能地小且没有任何未使用的库。<br />
<br />
使用第二个复选框可以删除未使用的私有成员。私有成员只能在保存类中访问。如果不使用私有成员，则不需要它们。私有成员只会增加编译器的开销。重构代码后如果拥有大量未使用的遗留代码，则删除会十分高效。另一方面，这样做会十分危险。假定您在设计尚未使用但可能在将来使用的新方法的原型。此清理选项如果处于激活状态将删除这些方法，并且可能会错过重要的工作。 </p>
<p><strong>Unnecessary code</strong></p>
<p>使用第一个复选框来删除多余代码。多余代码的存在会导致运行时的额外开销，这取决于您使用的编译器。<br />
<br />
使用第二个复选框可以去掉多余的 <code><font face="新宋体">$NON-NLS$</font></code> 标记。这些标记仅由 Eclipse 使用来识别不应当具体化的字符串。 </p>
<p><br />
<strong>图 6. 多余代码</strong><br />
<img height="479" alt="多余代码" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101113248.jpg" width="572" border="1" /> <br />
</p>
<p><span class="smalltitle"><strong><font size="3">Missing Code</font></strong></span></p>
<p>第四个选项卡允许您添加缺少代码。</p>
<p><strong>Annotations</strong>
<p>定义要将哪些注释添加到代码中。因为当使用不赞成使用的方法或者覆盖已标记方法未能正确覆盖某一个超类中的方法时，Java V5.0 <code><font face="新宋体">@Override</font></code> 或 <code><font face="新宋体">@Deprecated</font></code> 注释将帮助编译器生成错误。注意，这些注释不具有向后兼容性。 </p>
<p><strong>Potential programming problems</strong>
<p>如果需要添加序列版本 ID，则定义此设置。对于实现 <code><font face="新宋体">Serializable</font></code> 接口的类，建议这些类使用私有静态 final 变量定义一个序列版本 UID。此变量可以自动生成。它用于在反序列化过程中检查兼容性。 </p>
<p><br />
<strong>图 7. 缺失的代码</strong><br />
<img height="479" alt="缺失的代码" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101115229.jpg" width="572" border="1" /> <br />
<br />
</p>
<p><span class="smalltitle"><strong><font size="3">Code Organizing</font></strong></span></p>
<p>第五个选项卡虽然位于最后但不可忽略其重要性，它用于帮助您组织代码。</p>
<p><strong>Formatter</strong></p>
<p>定义在代码清理内是否应当使用格式程序。查阅格式程序首选项：<strong>Preferences &gt; Java &gt; Code Style &gt; Formatter</strong>。 </p>
<p><strong>Imports</strong> </p>
<p>定义是否应当使用 Organize Imports。查阅组织导入首选项：<strong>Preferences &gt; Java &gt; Code Style &gt; Organize Imports</strong>。 </p>
<p><strong>Members</strong> </p>
<p>定义是否需要按字母序把成员分类。有时，将成员按字母序分类非常好可以更好地浏览代码。不过，也可能有人会反对这样做。假定您将组织您的代码，使彼此调用的方法靠近放置在一起以便于进行代码浏览。排序可能会重新组织这些方法，并且它们可能不是所需的顺序。概览视图提供了一项优秀的功能用于给视图中的成员排序，但是不能给代码中的成员排序。具体配置和给成员排序的方法可以在 <strong>Preferences &gt; Java &gt; Appearance &gt; Members Sort Order</strong> 中找到。 </p>
<p><br />
<strong>图 8. 代码组织</strong><br />
<img height="479" alt="代码组织" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101117412.jpg" width="572" border="1" /> <br />
</p>
<p><span class="atitle">如何应用配置文件</span></p>
<p>在创建了清理配置文件后，可以通过多种方法将其应用到代码中。最简单的方法是在 Java 编辑器中打开上下文菜单并选择 <strong>Source &gt; Clean Up</strong>。</p>
<p><br />
<a name="fig9"><strong>图 9. 打开清理向导</strong></a><br />
<img height="534" alt="打开清理向导" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101122281.jpg" width="572" border="1" /> <br />
<br />
</p>
<p>此操作将打开清理向导，如下所示：</p>
<p><br />
<a name="fig10"><strong>图 10. 清理向导</strong></a><br />
<img height="622" alt="清理向导" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101130700.jpg" width="572" border="1" /> <br />
</p>
<p><br />
<br />
　向导将引导您完成清理选定源代码的过程。左上的描述将显示将被清理的项目及编译单元的数目。通常，我们会将已配置的配置文件应用到编译单元中。但是，可以在应用代码清理之前先进行自定义。如果需要查看某个设置影响代码的结果，这可能十分有帮助。</p>
<p>　只要任何 Java 项目、软件包或 Java 文件至少包含一个编译单元，清理向导就可以在其中启动。例如，您可以选择工作区中的所有 Java 项目并启动向导。执行清理将影响工作区中可以用选定配置文件重构的所有编译单元。</p>
<p>　默认情况下，有一个用于整个工作区的全局清理配置文件。但是，也可以在项目属性中启用特定于项目的清理。每个项目都可以有自己的清理配置文件。要启用这种清理操作，只需打开项目属性并浏览到 <strong>Java Code Style &gt; Clean Up</strong>，如下所示：</p>
<p><br />
<a name="fig11"><strong>图 11. 应用配置文件</strong></a><br />
<img height="459" alt="应用配置文件" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101134463.jpg" width="572" border="1" /> <br />
<br />
</p>
<p>　要预览清理结果，请在清理向导中单击 <strong>Next</strong>。这时向导将计算代码更改数目。根据选定的编译单元数目，完成此过程可能需要花费一段时间。在下一个页面中，将为您呈现将要应用的更改。</p>
<p><br />
<a name="fig12"><strong>图 12. 预览结果</strong></a><br />
<img height="629" alt="预览结果" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101144457.jpg" width="572" border="1" /> <br />
<br />
</p>
<p>　该树列出了将受清理影响的所有编译单元。您可以进入到树中去选择编译单元的不同更改。选择更改将在比较视图中显示初始源代码和经过重构的源代码。在查看了更改后，您可能不希望应用所有更改。在这种情况下，您可以简单地取消选中不必执行的更改。单击 <strong>Finish</strong> 将执行整个清理操作。</p>
<p><br />
&nbsp;</p>
<p><a name="code-hd"><span class="atitle">注意事项</span></a></p>
<p>　诸如 <strong>Convert for loops to enhanced</strong> 或 <strong>Add missing annotations</strong> 之类的某些清理重构操作是与 Java 代码依从性 5.0 或 6.0 绑定的，并且仅当源代码是根据要求的 Java 版本编译的才能应用。清理向导允许您选择那些重构选项，而不论使用的是哪一个 Java 版本。因此如果您想知道没有转换 <code><font face="新宋体">for</font></code> 循环或者未能正确注释掉不赞成使用的方法的原因，请在 <strong>Preferences &gt; Java &gt; Compiler</strong> 下查看工作区或项目的编译器依从级别。</p>
<p>　在多次运行清理向导并且配置文件已经正确设置后，您可能不希望每次执行清理操作时都在向导中多次进行单击。在这种情况下，您只需在 <strong>Preferences &gt; Java &gt; Code Style &gt; Clean Up</strong> 下的配置文件设置页面中禁用向导。</p>
<p><br />
<a name="fig13"><strong>图 13. 隐藏/显示清理向导</strong></a><br />
<img height="92" alt="隐藏/显示清理向导" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101156311.jpg" width="483" border="1" /> <br />
<br />
</p>
<p>　在各种资源上执行代码清理通常会导致很多更改。向导允许您在应用之前预览那些更改。但是，如果数百计文件都受到影响则会使预览不方便，尤其是当您需要在预览过程中查找某个更改时。使用过滤器选项可以缩小预览页面中显示的更改列表。通常，几乎所有文件都会受到源代码格式操作的影响，但是添加缺失的不赞成注释影响的文件却不多。在这种情况下，过滤器将通过过滤其他更改来帮助您找到那些文件。过滤器位于预览页面的右上角。</p>
<p><br />
<a name="fig14"><strong>图 14. 应用过滤器</strong></a><br />
<img height="255" alt="应用过滤器" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101157206.jpg" width="304" border="1" /> <br />
<br />
</p>
<p>　清理操作不但可以手动执行，而且还可以在执行 Java 文件的保存操作期间执行。要启用此功能，请转到 <strong>Window &gt; Preferences &gt; Java &gt; Editor &gt; Save Actions</strong> 并选择附加操作。请按前述配置清理操作，然后就会在每次保存 Java 文件时都执行这些清理操作。请注意，执行那些操作有时会加大开销并且降低工作台的速度。同时，如果没有想到清理操作，您可能会在保存刚刚编写的代码后觉得很困惑为什么代码不太一样。</p>
<p><br />
<a name="fig15"><strong>图 15. 保存时执行清理</strong></a><br />
<img height="514" alt="保存时执行清理" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101202190.jpg" width="572" border="1" />&nbsp;<br />
</p>
<p><a name="code-hd"><span class="atitle"><br />
<br />
<br />
<strong>结束语</strong></span></a></p>
<p>　清理是一个极具实用性的工具，它可以使您的代码看上去更舒服并且易于其他人快速理解代码。它甚至可能使代码更健壮。但是，编码样式可以风格各异。例如，过去避免使用过多引号的程序员现在不需要在任何可能的位置使用代码块，就是因为清理向导提供了该操作。</p>
<p>　清理不能解决概念问题或功能问题 —— 至少用当前版本的 Eclipse 还无法完成。但是以清晰的方式显示代码可以省去很多工作。向导附带的操作十分丰富，并且涵盖了编码样式和约定的多个要点。各个组织必须确定自己的样式和约定，因此，如果能对向导进行扩展将十分有帮助，这在 Eclipse V3.3 中还未实现。清理概念不但在 Java 世界中十分有意义，而且对于 C/C++、PHP、Python、Perl 等其他语言也会十分有用。社区会如何采用这一特性？它的发展方向会是怎样呢？我想这些都会是十分有趣的。</p>
<br />
<p><a name="resources"><span class="atitle"><strong>参考资料</strong> </span></a></p>
<strong>学习</strong><br />
<p>您可以参阅本文在 developerWorks 全球站点上的 <a href="http://www.ibm.com/developerworks/opensource/library/os-eclipse-clean/?S_TACT=105AGX52&amp;S_CMP=cn-a-os" target="_blank"><font color="#5c81a7"><u>英文原文</u></font></a>。</p>
<p>查阅 &#8220;<a href="http://www.ibm.com/developerworks/cn/opensource/os-ecl-read"><font color="#5c81a7"><u>Eclipse 推荐读物列表</u></font></a>&#8221;。</p>
<p>Eclipse 新用户应当查阅 <a href="http://www.ibm.com/developerworks/cn/eclipse/starthere.html"><font color="#5c81a7"><u>Eclipse 项目资源的新手入门</u></font></a>。</p>
<p>查阅 IBM developerWorks 的 <a href="http://www.ibm.com/developerworks/cn/eclipse/index.html"><font color="#5c81a7"><u>Eclipse 项目资源</u></font></a> 扩展 Eclipse 技巧。</p>
<p>要收听针对软件开发人员的有趣访谈和讨论，一定要访问 <a href="http://www.ibm.com/developerworks/podcast/?S_TACT=105AGX52&amp;S_CMP=cn-a-os"><font color="#5c81a7"><u>developerWorks podcast</u></font></a>。</p>
<p>要获得关于 Eclipse 平台的介绍性文章，请参阅 &#8220;<a href="http://www.ibm.com/developerworks/cn/linux/opensource/os-ecov/"><font color="#5c81a7"><u>Eclipse 平台入门</u></font></a>&#8221;。</p>
<p>随时关注 developerWorks 的 <a href="http://www.ibm.com/developerworks/offers/techbriefings/?S_TACT=105AGX52&amp;S_CMP=cn-a-os"><font color="#5c81a7"><u>技术事件和网络广播</u></font></a>。</p>
<p>查看免费的 <a href="http://www.ibm.com/developerworks/offers/lp/demos/?S_TACT=105AGX52&amp;S_CMP=cn-a-os"><font color="#5c81a7"><u>developerWorks On demand demo</u></font></a> 观看并了解 IBM 及开源技术和产品功能。</p>
<p>查阅最近将在全球举办的面向 IBM 开放源码开发人员的研讨会、交易展览、网络广播和其他 <a href="http://www.ibm.com/developerworks/views/opensource/events.jsp?S_TACT=105AGX52&amp;S_CMP=cn-a-os"><font color="#5c81a7"><u>活动</u></font></a>。</p>
<p>访问 developerWorks <a href="http://www.ibm.com/developerworks/cn/opensource"><font color="#5c81a7"><u>开放源码专区</u></font></a>，获得丰富的 how-to 信息、工具和项目更新，帮助您用开放源码技术进行开发，并与 IBM 产品结合使用。<br />
<br />
<br />
<strong>获得产品和技术</strong>
<p>&nbsp;</p>
<p>在 IBM <a href="http://www.alphaworks.ibm.com/"><font color="#5c81a7"><u>alphaWorks</u></font></a> 中查阅最新的 <a href="http://www.alphaworks.ibm.com/eclipse"><font color="#5c81a7"><u>Eclipse 技术下载</u></font></a>。</p>
<p>从 Eclipse Foundation 下载 <a href="http://www.eclipse.org/downloads/"><font color="#5c81a7"><u>Eclipse Platform 及其他项目</u></font></a>。</p>
<p>下载 <a href="http://www.ibm.com/developerworks/downloads/?S_TACT=105AGX52&amp;S_CMP=cn-a-os"><font color="#5c81a7"><u>IBM 产品评估版本</u></font></a>，并开始使用 DB2&#174;、Lotus&#174;、Rational&#174;、Tivoli&#174; 和 WebSphere&#174; 的应用程序开发工具和中间件产品。</p>
<p>使用 <a href="http://www.ibm.com/developerworks/downloads/?S_TACT=105AGX52&amp;S_CMP=cn-a-os"><font color="#5c81a7"><u>IBM 试用软件</u></font></a> 改进您的下一个开发项目，这些软件可以通过下载或从 DVD 中获得。 <br />
<strong>讨论</strong>
<p>&nbsp;</p>
<p><a href="news://news.eclipse.org/eclipse.platform"><font color="#5c81a7"><u>Eclipse Platform 新闻组</u></font></a> 应当是讨论关于 Eclipse 的问题的第一站（选择此链接将启动默认的 Usenet 新闻阅读器应用程序并打开 eclipse.platform）。</p>
<p><a href="http://www.eclipse.org/newsgroups/"><font color="#5c81a7"><u>Eclipse 新闻组</u></font></a> 中有很多参考资料适用于对使用和扩展 Eclipse 感兴趣的人员。</p>
<p>参与 <a href="http://www.ibm.com/developerworks/blogs?S_TACT=105AGX52&amp;S_CMP=cn-a-os"><font color="#5c81a7"><u>developerWorks blogs</u></font></a> 并加入 developerWorks 社区。&lt;</p>
<p><a name="author"><span class="atitle"><strong>作者简介</strong></span></a></p>
<table cellspacing="0" cellpadding="0" width="95%" border="0">
    <tbody>
        <tr>
            <td colspan="3"><img height="5" alt="" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101205640.gif" width="100%" /></td>
        </tr>
        <tr valign="top" align="left">
            <td>
            <p><img alt="Katrin Limpoeck" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101206896.jpg" align="left" valign="top" /></p>
            </td>
            <td><img height="5" alt="" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101205640.gif" width="4" /></td>
            <td width="100%">
            <p>Katrin Limpoeck 是德国 Boeblingen 的 IBM 开发实验室的软件工程师。她拥有帕桑 (Passau) 大学的计算机科学硕士学位。在 2006 年加入 IBM 德国之前，她参与了多个软件工程项目。她所感兴趣的领域包括业务流程管理、面向服务的架构、Java 开发和 Eclipse。</p>
            </td>
        </tr>
    </tbody>
</table>
<br />
<table cellspacing="0" cellpadding="0" width="95%" border="0">
    <tbody>
        <tr>
            <td colspan="3"><img height="5" alt="" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101205640.gif" width="100%" /></td>
        </tr>
        <tr valign="top" align="left">
            <td>
            <p><img height="80" alt="" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101206346.jpg" width="64" align="left" /></p>
            </td>
            <td><img height="5" alt="" src="http://java.chinaitlab.com/UploadFiles_8734/200708/20070809101205640.gif" width="4" /></td>
            <td width="100%">
            <p>Philipp Tiedt 是德国 Boeblingen 的 IBM 开发实验室的软件工程师。他从 Open University 获得了计算机科学的学士学位。在 2004 年加入 IBM 德国公司之前，他在纽约 Hawthorne 的 IBM T.J. Watson Research Center 完成了毕业设计。他感兴趣的领域是 Eclipse、用户界面设计、Java 技术和面向服务的架构。</p>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/hengheng123456789/aggbug/143328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2007-09-07 10:08 <a href="http://www.blogjava.net/hengheng123456789/archive/2007/09/07/143328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclicpse3.1.1下配置SWT，打包发布SWT程序，转EXE一条龙过程记录</title><link>http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142338.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Mon, 03 Sep 2007 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142338.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/142338.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142338.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/142338.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/142338.html</trackback:ping><description><![CDATA[&nbsp;
<p style="text-align: center" align="center">Eclicpse3.1.1<span style="font-family: 宋体">下配置</span>SWT<span style="font-family: 宋体">，打包发布</span>SWT<span style="font-family: 宋体">程序，转</span>EXE<span style="font-family: 宋体">一条龙过程记录</span></p>
<p style="text-align: center" align="center"><a href="http://www.my85.cn/post/1.html">http://www.my85.cn/post/1.html</a></p>
<p>1.<span style="font-family: 宋体">到</span>www.eclipse.org<span style="font-family: 宋体">上下载</span>SWT.</p>
<p><span style="font-family: 宋体">我这里用的是</span>1.1.0.1<span style="font-family: 宋体">，并且页面上就有推荐的</span>Eclipse3.1.1<span style="font-family: 宋体">，</span>EMF,GEF<span style="font-family: 宋体">。都下载了！</span></p>
<p>2.<span style="font-family: 宋体">按照</span>Eclipse<span style="font-family: 宋体">安装插件的方法，安装</span>SWT,EMF,GEF<span style="font-family: 宋体">。</span></p>
<p>3.<span style="font-family: 宋体">如果不出意外，就可以正常使用了！</span></p>
<p><span style="font-family: 宋体">这里有一个建议：最好使用纯的</span>Eclipse<span style="font-family: 宋体">，我开始用</span>WTP<span style="font-family: 宋体">版的，怎么配置也不行。</span></p>
<p><span style="font-family: 宋体">可以建立</span>Visual Class<span style="font-family: 宋体">，但是不能可视化添加控件，或者看不到控件的属性，或者</span>Text,TextArea<span style="font-family: 宋体">控件无法添加。后来按照以上方法，重新来了一次，</span>OK<span style="font-family: 宋体">了</span>!</p>
<p><span style="font-family: 宋体">二打包发布</span>SWT<span style="font-family: 宋体">程序</span></p>
<p>1.<span style="font-family: 宋体">因为需要</span>SWT<span style="font-family: 宋体">的</span>jar.<span style="font-family: 宋体">但是</span>Eclipse3.1.1<span style="font-family: 宋体">配合的的</span>SWT<span style="font-family: 宋体">不是通过</span>SWT.jar<span style="font-family: 宋体">发布的！是</span>org.eclipse.swt.win32.win32.x86_3.1.0.jar<span style="font-family: 宋体">。里面包括了</span>JINI<span style="font-family: 宋体">的</span>DLL<span style="font-family: 宋体">和</span>SWT<span style="font-family: 宋体">类文件。</span></p>
<p><span style="font-family: 宋体">需要下载</span></p>
<p>http://www.eclipse.org/downloads/download.php?file=/eclipse/dow ... 09290840/swt-3.1.1-win32-win32-x86.zip</p>
<p><span style="font-family: 宋体">这里有</span>SWT.jar<span style="font-family: 宋体">，和</span>3<span style="font-family: 宋体">个</span>DLL,<span style="font-family: 宋体">把他们解压缩出来，备用！</span></p>
<p>2.<span style="font-family: 宋体">通过</span>Eclipse<span style="font-family: 宋体">的导出功能，生成一个可执行的</span>jar<span style="font-family: 宋体">，</span>MANIFEST.MF<span style="font-family: 宋体">文件选择由</span>Eclipse<span style="font-family: 宋体">生成，并且保存到项目中。</span></p>
<p>3.<span style="font-family: 宋体">上面</span>2<span style="font-family: 宋体">的步骤，只是为了得到</span>MANIFEST.MF<span style="font-family: 宋体">文件。下面修改一下这个文件。</span></p>
<p><span style="font-family: 宋体">加上</span> Class-Path: SWT.jar</p>
<p><span style="font-family: 宋体">如果还有其他的</span>jar,<span style="font-family: 宋体">用空格分开，加到后面</span></p>
<p>4.<span style="font-family: 宋体">再生成一次</span>jar,MANIFEST.MF<span style="font-family: 宋体">选择修改后的。</span></p>
<p>5.<span style="font-family: 宋体">将打包的</span>jar,SWT.jar,3<span style="font-family: 宋体">个</span>DLL<span style="font-family: 宋体">放到一个文件夹下，双击可执行的</span>jar<span style="font-family: 宋体">，程序运行！</span></p>
<p><span style="font-family: 宋体">三</span>jar<span style="font-family: 宋体">转</span>EXE</p>
<p>1.<span style="font-family: 宋体">打开</span>JSmooth0.9.9-7<span style="font-family: 宋体">。</span><a href="http://www610.fixdown.com/jsmooth-0.9.9-7-setup.exe">http://www610.fixdown.com/jsmooth-0.9.9-7-setup.exe</a></p>
<p>2.<span style="font-family: 宋体">选择</span>skeleton,<span style="font-family: 宋体">在</span>skeleton properties<span style="font-family: 宋体">中先把</span>Launch java app in the exe process,Debug console<span style="font-family: 宋体">选中。可以查看生成</span>EXE<span style="font-family: 宋体">文件执行过程信息。</span></p>
<p>3.<span style="font-family: 宋体">选择</span>Executable.</p>
<p><span style="font-family: 宋体">选择生成的</span>EXE<span style="font-family: 宋体">文件存放位置。</span></p>
<p><span style="font-family: 宋体">选择</span>EXE<span style="font-family: 宋体">文件图标</span></p>
<p><span style="font-family: 宋体">设置当前路径，选择要转换的</span>jar<span style="font-family: 宋体">文件所在文件夹</span></p>
<p>4.<span style="font-family: 宋体">选择</span>Application</p>
<p><span style="font-family: 宋体">设置</span>Main Class,<span style="font-family: 宋体">可执行</span>jar<span style="font-family: 宋体">中的</span>Main Class<span style="font-family: 宋体">注意写类全名</span></p>
<p><span style="font-family: 宋体">设置</span>Application Argument,<span style="font-family: 宋体">如果需要传入参数，写到这里</span></p>
<p><span style="font-family: 宋体">设置</span>Embedded jar: <span style="font-family: 宋体">可执行的</span>jar</p>
<p><span style="font-family: 宋体">设置</span>Classpath<span style="font-family: 宋体">：</span>SWT.jar <span style="font-family: 宋体">如果有其他的继续添加</span></p>
<p>5.<span style="font-family: 宋体">选择</span>JVM Selection<span style="font-family: 宋体">。默认吧。</span></p>
<p>6.JVM Configuration:</p>
<p><span style="font-family: 宋体">可以设置</span>java properties,<span style="font-family: 宋体">内存使用</span></p>
<p>7.<span style="font-family: 宋体">点齿轮。生成！看是否有错误。</span></p>
<p>8.EXE<span style="font-family: 宋体">执行需要的文件：</span>EXE,3<span style="font-family: 宋体">个</span>DLL<span style="font-family: 宋体">，</span>SWT.jar</p>
<p><span style="font-family: 宋体">把他们考到其他目录，一样可以执行！</span></p>
<p>9.<span style="font-family: 宋体">去掉</span>skeleton properties<span style="font-family: 宋体">中的</span>Launch java app in the exe process,Debug console<span style="font-family: 宋体">选项。</span></p>
<p><span style="font-family: 宋体">重新生成。应该</span>OK<span style="font-family: 宋体">了！</span></p>
<p>-----</p>
<p><span style="font-family: 宋体">看了这个，终于完成了</span>SWT<span style="font-family: 宋体">程序打包，太爽了</span></p>
<img src ="http://www.blogjava.net/hengheng123456789/aggbug/142338.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2007-09-03 15:47 <a href="http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142338.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse Shortup</title><link>http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142339.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Mon, 03 Sep 2007 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142339.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/142339.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142339.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/142339.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/142339.html</trackback:ping><description><![CDATA[&nbsp;
<p style="text-align: center" align="center">Eclipse Shortup</p>
<p>&nbsp;<span style="font-family: 宋体">快捷键命令作用</span> <span style="font-family: 宋体">快捷键序列</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">保存</span> Ctrl+S&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">刷新</span> F5&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">关闭</span> Ctrl+W&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">属性</span> Alt+Enter&nbsp;&nbsp; </p>
<p>&nbsp;Format Ctrl+Shift+F&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">删除行</span> Ctrl+D&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">在当前行上面插入行</span> Ctrl+Shift+Enter&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">在当前行下面插入行</span> Shift+Enter&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">更改为大写</span> Ctrl+Shift+X&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">更改为小写</span> Ctrl+Shift+Y&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">选择行末</span> Shift+End&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">将活动视图或编辑器最大化</span> Ctrl+M&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">复制</span> Ctrl+C&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">撤销</span> Ctrl+Z&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">查找并替换</span> Ctrl+F&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">粘贴</span> Ctrl+V&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">单步跳入</span> F5&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">单步跳过</span> F6&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">剪切</span> Ctrl+X&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">复制行</span> Ctrl+Alt+<span style="font-family: 宋体">向下键</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">重复行</span> Ctrl+Alt+<span style="font-family: 宋体">向上键</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">选择行首</span> Shift+Home&nbsp;&nbsp; </p>
<p>&nbsp;Show&nbsp;&nbsp; In&nbsp;&nbsp; Spring&nbsp;&nbsp; Beans&nbsp;&nbsp; View Ctrl+Alt+V &nbsp;&nbsp;</p>
<p>&nbsp;Zoom&nbsp;&nbsp; In Ctrl+=&nbsp;&nbsp; </p>
<p>&nbsp;Zoom&nbsp;&nbsp; Out Ctrl+-&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">关闭用户帮助托盘</span> Ctrl+F4&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">关闭用户帮助托盘</span> Ctrl+W&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">在工作空间中查找文本</span> Ctrl+Alt+G&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">工作空间中的声明</span> Ctrl+G&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">工作空间中的引用</span> Ctrl+Shift+G&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">打开&#8220;搜索&#8221;对话框</span> Ctrl+H&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">显示&#8220;文件中的出现位置&#8221;快速菜单</span> Ctrl+Shift+U&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">&#8220;新建&#8221;菜单</span> Alt+Shift+N&nbsp;&nbsp; </p>
<p>&nbsp;Open&nbsp;&nbsp; Java&nbsp;&nbsp; Type Ctrl+Alt+T&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">全部保存</span> Ctrl+Shift+S&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">全部关闭</span> Ctrl+Shift+F4&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">全部关闭</span> Ctrl+Shift+W&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">关闭</span> Ctrl+F4&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">打印</span> Ctrl+P&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">新建</span> Ctrl+N&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">重命名</span> F2&nbsp;&nbsp; </p>
<p>&nbsp;Jump&nbsp;&nbsp; to&nbsp;&nbsp; Java Alt+F8&nbsp;&nbsp; </p>
<p>&nbsp;Jump&nbsp;&nbsp; to&nbsp;&nbsp; Specification Alt+F7&nbsp;&nbsp; </p>
<p>&nbsp;Jump&nbsp;&nbsp; to&nbsp;&nbsp; Specification Alt+F7 &nbsp;&nbsp;</p>
<p>&nbsp;Jump&nbsp;&nbsp; to&nbsp;&nbsp; Template Alt+F6&nbsp;&nbsp; </p>
<p>&nbsp;Jump&nbsp;&nbsp; to&nbsp;&nbsp; Template Alt+F6&nbsp;&nbsp; </p>
<p>&nbsp;Next&nbsp;&nbsp; Attribute Ctrl+Alt+<span style="font-family: 宋体">右箭头</span>&nbsp;&nbsp; </p>
<p>&nbsp;Next&nbsp;&nbsp; Tag Ctrl+Alt+<span style="font-family: 宋体">向下键</span>&nbsp;&nbsp; </p>
<p>&nbsp;Open&nbsp;&nbsp; Declaration F3&nbsp;&nbsp; </p>
<p>&nbsp;Open&nbsp;&nbsp; Structure Ctrl+F3&nbsp;&nbsp; </p>
<p>&nbsp;Previous&nbsp;&nbsp; Attribute Ctrl+Alt+<span style="font-family: 宋体">左箭头</span>&nbsp;&nbsp; </p>
<p>&nbsp;Previous&nbsp;&nbsp; Tag Ctrl+Alt+<span style="font-family: 宋体">向上键</span>&nbsp;&nbsp; </p>
<p>&nbsp;Show&nbsp;&nbsp; Outline Ctrl+O&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">上一个词语</span> Ctrl+<span style="font-family: 宋体">左箭头</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">上滚行</span> Ctrl+<span style="font-family: 宋体">向上键</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">下一个词语</span> Ctrl+<span style="font-family: 宋体">右箭头</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">下滚行</span> Ctrl+<span style="font-family: 宋体">向下键</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">全部展开</span> Ctrl+Numpad_Multiply&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">全部折叠</span> Ctrl+Shift+Numpad_Divide&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">切换折叠</span> Ctrl+Numpad_Divide&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">删除上一个词语</span> Ctrl+Backspace&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">删除下一个词语</span> Ctrl+Delete&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">删除至行末</span> Ctrl+Shift+Delete&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">复位结构</span> Ctrl+Shift+Numpad_Multiply&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">将行上移</span> Alt+<span style="font-family: 宋体">向上键</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">将行下移</span> Alt+<span style="font-family: 宋体">向下键</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">展开</span> Ctrl+Numpad_Add&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">折叠</span> Ctrl+Numpad_Subtract&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">改写切换</span> Insert&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">文本开头</span> Ctrl+Home&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">文本末尾</span> Ctrl+End&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">行末</span> End&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">行首</span> Home&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">选择上一个词语</span> Ctrl+Shift+<span style="font-family: 宋体">左箭头</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">选择下一个词语</span> Ctrl+Shift+<span style="font-family: 宋体">右箭头</span>&nbsp;&nbsp; </p>
<p>&nbsp;Java&nbsp;&nbsp; <span style="font-family: 宋体">包资源管理器</span> Alt+Shift+Q<span style="font-family: 宋体">，</span>P&nbsp;&nbsp; </p>
<p>&nbsp;Java&nbsp;&nbsp; <span style="font-family: 宋体">声明</span> Alt+Shift+Q<span style="font-family: 宋体">，</span>D&nbsp;&nbsp; </p>
<p>&nbsp;Java&nbsp;&nbsp; <span style="font-family: 宋体">类型层次结构</span> Alt+Shift+Q<span style="font-family: 宋体">，</span>T&nbsp;&nbsp; </p>
<p>&nbsp;Javadoc Alt+Shift+Q<span style="font-family: 宋体">，</span>J&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">变量</span> Alt+Shift+Q<span style="font-family: 宋体">，</span>V&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">同步</span> Alt+Shift+Q<span style="font-family: 宋体">，</span>Y&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">备忘单</span> Alt+Shift+Q<span style="font-family: 宋体">，</span>H&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">控制台</span> Alt+Shift+Q<span style="font-family: 宋体">，</span>C&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">搜索</span> Alt+Shift+Q<span style="font-family: 宋体">，</span>S&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">断点</span> Alt+Shift+Q<span style="font-family: 宋体">，</span>B&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">显示视图</span>&nbsp;&nbsp; (<span style="font-family: 宋体">查看</span>:&nbsp;&nbsp; <span style="font-family: 宋体">大纲</span>) Alt+Shift+Q<span style="font-family: 宋体">，</span>O&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">显示视图</span> Alt+Shift+Q<span style="font-family: 宋体">，</span>Q&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">显示视图</span>&nbsp;&nbsp; (<span style="font-family: 宋体">查看</span>:&nbsp;&nbsp; <span style="font-family: 宋体">问题</span>) Alt+Shift+Q<span style="font-family: 宋体">，</span>X&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">&#8220;显示位置&#8221;菜单</span> Alt+Shift+W&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">上一个编辑位置</span> Ctrl+Q&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">上一项</span> Ctrl+&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">下一项</span> Ctrl+.&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">前移历史记录</span> Alt+<span style="font-family: 宋体">右箭头</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">后退历史记录</span> Alt+<span style="font-family: 宋体">左箭头</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">在层次结构中打开类型</span> Ctrl+Shift+H&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">快速大纲</span> Ctrl+O&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">快速层次结构</span> Ctrl+T&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">打开声明</span> F3&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">打开外部</span>&nbsp;&nbsp; Javadoc Shift+F2&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">打开类型</span> Ctrl+Shift+T&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">打开类型层次结构</span> F4&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">打开结构</span> Ctrl+F3&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">打开调用层次结构</span> Ctrl+Alt+H&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">打开资源</span> Ctrl+Shift+R&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">转至上一个成员</span> Ctrl+Shift+<span style="font-family: 宋体">向上键</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">转至下一个成员</span> Ctrl+Shift+<span style="font-family: 宋体">向下键</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">转至匹配的方括号</span> Ctrl+Shift+P&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">转至行</span> Ctrl+L&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">切换</span>&nbsp;&nbsp; Ant&nbsp;&nbsp; <span style="font-family: 宋体">标记出现</span> Alt+Shift+O&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">切换标记出现</span> Alt+Shift+O&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">切换注释</span> Ctrl+/&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">切换注释</span> Ctrl+7&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">切换注释</span> Ctrl+Shift+C&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">包围方式快速菜单</span> Alt+Shift+Z&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">在文件中重命名</span> Alt+Shift+R&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">快速辅助</span>&nbsp;&nbsp; <span style="font-family: 宋体">－</span>&nbsp;&nbsp; <span style="font-family: 宋体">在文件中重命名</span> Ctrl+2<span style="font-family: 宋体">，</span>R&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">快速辅助</span>&nbsp;&nbsp; <span style="font-family: 宋体">－</span>&nbsp;&nbsp; <span style="font-family: 宋体">指定给字段</span> Ctrl+2<span style="font-family: 宋体">，</span>F&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">快速辅助</span>&nbsp;&nbsp; <span style="font-family: 宋体">－</span>&nbsp;&nbsp; <span style="font-family: 宋体">指定给局部变量</span> Ctrl+2<span style="font-family: 宋体">，</span>L&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">打开外部文档</span> Shift+F2&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">显示工具提示描述</span> F2&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">显示源代码快速菜单</span> Alt+Shift+S&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">格式化</span> Ctrl+Shift+F&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">格式化</span> Ctrl+Shift+F&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">添加</span>&nbsp;&nbsp; Javadoc&nbsp;&nbsp; <span style="font-family: 宋体">注释</span> Alt+Shift+J&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">添加块注释</span> Ctrl+Shift+/&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">添加导入</span> Ctrl+Shift+M&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">组织导入</span> Ctrl+Shift+O&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">缩进行</span> Ctrl+I&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">除去出现注释</span> Alt+Shift+U&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">除去块注释</span> Ctrl+Shift+"&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">上一个编辑器</span> Ctrl+Shift+F6&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">上一个视图</span> Ctrl+Shift+F7&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">上一个透视图</span> Ctrl+Shift+F8&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">下一个编辑器</span> Ctrl+F6&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">下一个视图</span> Ctrl+F7&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">下一个透视图</span> Ctrl+F8&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">切换至编辑器</span> Ctrl+Shift+E&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">快速切换编辑器</span> Ctrl+E&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">显示标尺上下文菜单</span> Ctrl+F10&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">显示系统菜单</span> Alt+-&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">显示视图菜单</span> Ctrl+F10&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">显示键辅助</span> Ctrl+Shift+L&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">激活编辑器</span> F12&nbsp;&nbsp; </p>
<p>&nbsp;Add&nbsp;&nbsp; Block&nbsp;&nbsp; Comment Ctrl+Shift+/&nbsp;&nbsp; </p>
<p>&nbsp;Format&nbsp;&nbsp; Active&nbsp;&nbsp; Elements Ctrl+I&nbsp;&nbsp; </p>
<p>&nbsp;Format&nbsp;&nbsp; Document Ctrl+Shift+F&nbsp;&nbsp; </p>
<p>&nbsp;Move Alt+Shift+V&nbsp;&nbsp; </p>
<p>&nbsp;Occurrences&nbsp;&nbsp; in&nbsp;&nbsp; File Ctrl+Shift+A&nbsp;&nbsp; </p>
<p>&nbsp;Open&nbsp;&nbsp; Selection F3&nbsp;&nbsp; </p>
<p>&nbsp;Quick&nbsp;&nbsp; Fix Ctrl+1&nbsp;&nbsp; </p>
<p>&nbsp;Remove&nbsp;&nbsp; Block&nbsp;&nbsp; Comment Ctrl+Shift+"&nbsp;&nbsp; </p>
<p>&nbsp;Rename Alt+Shift+R&nbsp;&nbsp; </p>
<p>&nbsp;Restore&nbsp;&nbsp; Last&nbsp;&nbsp; Selection Alt+Shift+<span style="font-family: 宋体">向下键</span>&nbsp;&nbsp; </p>
<p>&nbsp;Run&nbsp;&nbsp; Query&nbsp;&nbsp; command Ctrl+F9&nbsp;&nbsp; </p>
<p>&nbsp;Run&nbsp;&nbsp; SQL Ctrl+F9&nbsp;&nbsp; </p>
<p>&nbsp;Select&nbsp;&nbsp; Enclosing&nbsp;&nbsp; Element Alt+Shift+<span style="font-family: 宋体">向上键</span>&nbsp;&nbsp; </p>
<p>&nbsp;Select&nbsp;&nbsp; Next&nbsp;&nbsp; Element Alt+Shift+<span style="font-family: 宋体">右箭头</span>&nbsp;&nbsp; </p>
<p>&nbsp;Select&nbsp;&nbsp; Previous&nbsp;&nbsp; Element Alt+Shift+<span style="font-family: 宋体">左箭头</span>&nbsp;&nbsp; </p>
<p>&nbsp;Show&nbsp;&nbsp; Tooltip&nbsp;&nbsp; Description F2&nbsp;&nbsp; </p>
<p>&nbsp;Toggle&nbsp;&nbsp; Comment Ctrl+Shift+C&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">&#8220;快速差别&#8221;开关</span> Ctrl+Shift+Q&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">上下文信息</span> Alt+?&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">上下文信息</span> Alt+Shift+?&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">上下文信息</span> Ctrl+Shift+Space&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">全部选中</span> Ctrl+A&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">内容辅助</span> Alt+/&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">切换插入方式</span> Ctrl+Shift+Insert&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">删除</span> Delete&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">剪切</span> Shift+Delete&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">增量查找</span> Ctrl+J&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">增量逆向查找</span> Ctrl+Shift+J&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">复制</span> Ctrl+Insert&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">复原上一个选择</span> Alt+Shift+<span style="font-family: 宋体">向下键</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">快速修正</span> Ctrl+1&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">文字补全</span> Ctrl+Alt+/&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">显示工具提示描述</span> F2&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">查找上一个</span> Ctrl+Shift+K&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">查找下一个</span> Ctrl+K&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">粘贴</span> Shift+Insert&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">选择上一个元素</span> Alt+Shift+<span style="font-family: 宋体">左箭头</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">选择下一个元素</span> Alt+Shift+<span style="font-family: 宋体">右箭头</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">选择外层元素</span> Alt+Shift+<span style="font-family: 宋体">向上键</span>&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">重做</span> Ctrl+Y&nbsp;&nbsp; </p>
<p>&nbsp;Debug&nbsp;&nbsp; on&nbsp;&nbsp; Server Alt+Shift+D<span style="font-family: 宋体">，</span>R&nbsp;&nbsp; </p>
<p>&nbsp;EOF Ctrl+Z&nbsp;&nbsp; </p>
<p>&nbsp;Profile&nbsp;&nbsp; on&nbsp;&nbsp; Server Alt+Shift+P<span style="font-family: 宋体">，</span>R&nbsp;&nbsp; </p>
<p>&nbsp;Run&nbsp;&nbsp; on&nbsp;&nbsp; Server Alt+Shift+X<span style="font-family: 宋体">，</span>R&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">下一个内存监视器</span> Ctrl+Alt+N&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">切换内存监视器窗格</span> Ctrl+T&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">切换单步执行过滤器</span> Shift+F5&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">切换行断点</span> Ctrl+Shift+B&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">单步跳入选择的内容</span> Ctrl+F5&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">单步返回</span> F7&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">执行</span> Ctrl+U&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">显示</span> Ctrl+Shift+D&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">检查</span> Ctrl+Shift+I&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">添加内存块</span> Ctrl+Alt+M&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">继续</span> F8&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">调试</span>&nbsp;&nbsp; Ant&nbsp;&nbsp; <span style="font-family: 宋体">构建</span> Alt+Shift+D<span style="font-family: 宋体">，</span>Q&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">调试</span>&nbsp;&nbsp; Eclipse&nbsp;&nbsp; <span style="font-family: 宋体">应用程序</span> Alt+Shift+D<span style="font-family: 宋体">，</span>E&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">调试</span>&nbsp;&nbsp; Equinox&nbsp;&nbsp; <span style="font-family: 宋体">框架</span> Alt+Shift+D<span style="font-family: 宋体">，</span>X&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">调试</span>&nbsp;&nbsp; JUnit&nbsp;&nbsp; <span style="font-family: 宋体">插件测试</span> Alt+Shift+D<span style="font-family: 宋体">，</span>P&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">调试</span>&nbsp;&nbsp; JUnit&nbsp;&nbsp; <span style="font-family: 宋体">测试</span> Alt+Shift+D<span style="font-family: 宋体">，</span>T&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">调试</span>&nbsp;&nbsp; Java&nbsp;&nbsp; Applet Alt+Shift+D<span style="font-family: 宋体">，</span>A&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">调试</span>&nbsp;&nbsp; Java&nbsp;&nbsp; <span style="font-family: 宋体">应用程序</span> Alt+Shift+D<span style="font-family: 宋体">，</span>J&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">调试</span>&nbsp;&nbsp; SWT&nbsp;&nbsp; <span style="font-family: 宋体">应用程序</span> Alt+Shift+D<span style="font-family: 宋体">，</span>S&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">调试上次启动</span> F11&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">转至地址</span> Ctrl+G&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">运行</span>&nbsp;&nbsp; Ant&nbsp;&nbsp; <span style="font-family: 宋体">构建</span> Alt+Shift+X<span style="font-family: 宋体">，</span>Q&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">运行</span>&nbsp;&nbsp; Eclipse&nbsp;&nbsp; <span style="font-family: 宋体">应用程序</span> Alt+Shift+X<span style="font-family: 宋体">，</span>E&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">运行</span>&nbsp;&nbsp; Equinox&nbsp;&nbsp; <span style="font-family: 宋体">框架</span> Alt+Shift+X<span style="font-family: 宋体">，</span>X&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">运行</span>&nbsp;&nbsp; JUnit&nbsp;&nbsp; <span style="font-family: 宋体">插件测试</span> Alt+Shift+X<span style="font-family: 宋体">，</span>P&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">运行</span>&nbsp;&nbsp; JUnit &nbsp;&nbsp;<span style="font-family: 宋体">测试</span> Alt+Shift+X<span style="font-family: 宋体">，</span>T&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">运行</span>&nbsp;&nbsp; Java&nbsp;&nbsp; Applet Alt+Shift+X<span style="font-family: 宋体">，</span>A&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">运行</span>&nbsp;&nbsp; Java&nbsp;&nbsp; <span style="font-family: 宋体">应用程序</span> Alt+Shift+X<span style="font-family: 宋体">，</span>J&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">运行</span>&nbsp;&nbsp; SWT&nbsp;&nbsp; <span style="font-family: 宋体">应用程序</span> Alt+Shift+X<span style="font-family: 宋体">，</span>S&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">运行上次启动</span> Ctrl+F11&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">运行至行</span> Ctrl+R&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">内联</span> Alt+Shift+I&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">抽取局部变量</span> Alt+Shift+L&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">抽取方法</span> Alt+Shift+M&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">显示重构快速菜单</span> Alt+Shift+T&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">更改方法特征符</span> Alt+Shift+C&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">移动</span>&nbsp;&nbsp; <span style="font-family: 宋体">－</span>&nbsp;&nbsp; <span style="font-family: 宋体">重构</span> Alt+Shift+V&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">重命名</span>&nbsp;&nbsp; <span style="font-family: 宋体">－</span>&nbsp;&nbsp; <span style="font-family: 宋体">重构</span> Alt+Shift+R&nbsp;&nbsp; </p>
<p>&nbsp;<span style="font-family: 宋体">全部构建</span> Ctrl+B</p>
<img src ="http://www.blogjava.net/hengheng123456789/aggbug/142339.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2007-09-03 15:47 <a href="http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142339.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWT Dialog</title><link>http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142334.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Mon, 03 Sep 2007 07:43:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142334.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/142334.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142334.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/142334.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/142334.html</trackback:ping><description><![CDATA[&nbsp;
<p style="text-align: center" align="center">SWT<span style="font-family: 宋体">对话框</span></p>
<p><span style="font-family: 宋体">对话框，都继承自</span>org.eclipse.swt.widgets.Dialog<span style="font-family: 宋体">，有</span>Modal<span style="font-family: 宋体">的和</span>Modeless<span style="font-family: 宋体">的区分，一般的对话框处理程序如下：</span></p>
<p>&lt;DialogType&gt; dlg = new &lt;DialogType&gt;(shell);</p>
<p>dlg.setSomeData(data);</p>
<p>&lt;ReturnType&gt; returnValue = dlg.open();</p>
<p>if (returnValue == null) {</p>
<p>// User clicked cancel</p>
<p>} else {</p>
<p>// Do something with returnValue</p>
<p>}</p>
<p><span style="font-family: 宋体">对话框主要有以下六种：</span></p>
<p>1<span style="font-family: 宋体">、</span>MessageBox<span style="font-family: 宋体">，消息对话框</span></p>
<p><span style="font-family: 宋体">可定制的对话框样式包括：</span></p>
<p><span style="font-family: 宋体">标题栏：</span>setText()</p>
<p><span style="font-family: 宋体">消息提示：</span>setMessage()</p>
<p><span style="font-family: 宋体">消息图标类型：</span>style<span style="font-family: 宋体">属性，有：</span>SWT.ICON_ERROR<span style="font-family: 宋体">，</span>SWT.ICON_INFORMATION<span style="font-family: 宋体">，</span>SWT.ICON_QUESTION<span style="font-family: 宋体">，</span>SWT.ICON_WARNING<span style="font-family: 宋体">，</span>SWT.ICON_WORKING</p>
<p><span style="font-family: 宋体">按钮类型：</span>style<span style="font-family: 宋体">属性，有：</span>SWT.OK<span style="font-family: 宋体">，</span>SWT.OK | SWT.CANCEL<span style="font-family: 宋体">，</span>SWT.YES | SWT.NO<span style="font-family: 宋体">，</span>SWT.YES | SWT.NO | SWT.CANCEL<span style="font-family: 宋体">，</span>SWT.RETRY | SWT.CANCEL<span style="font-family: 宋体">，</span>SWT.ABORT | SWT.RETRY | SWT.IGNORE</p>
<p><span style="font-family: 宋体">对话框返回值：</span>int open()<span style="font-family: 宋体">，返回的是点击的按钮对应的</span>int<span style="font-family: 宋体">值。</span></p>
<p><span style="font-family: 宋体">示例：</span></p>
<p>MessageBox messageBox = new MessageBox(shell, SWT.ICON_QUESTION |SWT.YES | SWT.NO);</p>
<p>messageBox.setMessage(&#8221;Is this question simple?&#8221;);</p>
<p>int rc = messageBox.open();</p>
<p>2<span style="font-family: 宋体">、</span>ColorDialog<span style="font-family: 宋体">，选择颜色对话框</span></p>
<p>ColorDialog dlg = new ColorDialog(shell);</p>
<p>RGB rgb = dlg.open();</p>
<p>if (rgb != null) {</p>
<p>Color color = new Color(shell.getDisplay(), rgb);</p>
<p>}</p>
<p>3<span style="font-family: 宋体">、</span>DirectoryDialog<span style="font-family: 宋体">，文件夹选择对话框</span></p>
<p>DirectoryDialog dlg = new DirectoryDialog(shell);</p>
<p>dlg.setFilterPath(text.getText());</p>
<p>dlg.setText(&#8221;SWT&#8217;s DirectoryDialog&#8221;);</p>
<p>dlg.setMessage(&#8221;Select a directory&#8221;);</p>
<p>String selectedDirectory = dlg.open();</p>
<p>4<span style="font-family: 宋体">、</span>FileDialog<span style="font-family: 宋体">，文件选择对话框</span></p>
<p>FileDialog dlg = new FileDialog(shell, SWT.OPEN);</p>
<p>String fileName = dlg.open();</p>
<p>if (fileName != null) {</p>
<p>// Open the file</p>
<p>}</p>
<p><span style="font-family: 宋体">对话框标题栏：</span>void setText(String text)</p>
<p><span style="font-family: 宋体">文件后缀名过滤：</span>void setFilterExtensions (String[] extensions)</p>
<p><span style="font-family: 宋体">缺省路径及文件名：</span>void setFilterPath(String string)</p>
<p><span style="font-family: 宋体">返回值：</span>String[] getFileNames() / String getFileName()</p>
<img src ="http://www.blogjava.net/hengheng123456789/aggbug/142334.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2007-09-03 15:43 <a href="http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142334.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWT TableTree</title><link>http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142333.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Mon, 03 Sep 2007 07:42:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142333.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/142333.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142333.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/142333.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/142333.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;通过TreeColumn实现&#8220;表格树&#8221;TableTreeEclipse 3.1里deprecate了TableTree这个控件，与之对应的jface的TableTreeViewer虽然没有deprecate，但使用它会得到很多警告。在TableTreeViewer的第一列里是不能显示图标的，因为这个位置被+/-符号占用了，而且TableTree是显示不出...&nbsp;&nbsp;<a href='http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142333.html'>阅读全文</a><img src ="http://www.blogjava.net/hengheng123456789/aggbug/142333.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2007-09-03 15:42 <a href="http://www.blogjava.net/hengheng123456789/archive/2007/09/03/142333.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux中Eclipse的安装</title><link>http://www.blogjava.net/hengheng123456789/archive/2007/03/26/106388.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Mon, 26 Mar 2007 06:07:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2007/03/26/106388.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/106388.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2007/03/26/106388.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/106388.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/106388.html</trackback:ping><description><![CDATA[原文：<a href="http://www.eclipseworld.org/bbs/read.php?tid=4399">http://www.eclipseworld.org/bbs/read.php?tid=4399</a><br /><br />下面以Redhat9为例简单的介绍一下Eclipse的安装：<br /><br />一.下载所需软件<br /><br />1 下载 Eclipse，网址为<a href="http://www.eclipse.org/" target="_blank"><font face="Tahoma" color="#2f5fa1">http://www.eclipse.org</font></a> 选Linux版的<br /><br />eclipse-SDK-3.1.1-linux-gtk.tar.gz（最新的3.2）<br /><br />2 下载JDK，网站为<a href="http://java.sun.com/" target="_blank"><font face="Tahoma" color="#2f5fa1">http://java.sun.com</font></a><br /><br />j2sdk-1_4_2_04-linux-i586-rpm.bin （最新的5.0）<br /><br />二.安装 <br /><br />1 安装JDK（需以root身份安装）：<br /><br /># chmod ＋x j2sdk-1_4_2_04-linux-i586-rpm.bin<br />#./j2sdk-1_4_2_04-linux-i586-rpm.bin --自动解压，生成rpm 安装包。<br />#rpm –ivh j2sdk-1_4_2_01-linux-i586.rpm --安装<br />安装好的JDK 会存在 /usr/java/j2sdk1.4.2_04 目录中。<br />设定JAVA_HOME,CLASSPATH,PATH; 在/etc/profile.d下建立java.sh文件（推荐使用Gedit编辑）文件最后加如下四行：<br />export JAVA_HOME = /usr/java/j2sdk1.4.2_04<br />export PATH = $JAVA_HOME/bin:$PATH<br />CLASSPATH=.:/usr/java/j2sdk1.4.2_04/lib/tools.jar:$CLASSPATH<br />export CLASSPATH<br /><br />2安裝Eclipse<br /><br />把下载的文件解压即可：<br />#tar -zxvf eclipse-SDK-3.1.1-linux-gtk.tar.gz（可以加上绝对路径）<br /><br />3 为让每个用户都可以执行Eclipse，编写Eclipse.sh脚本：<br /><br />#!/bin/bash<br />#<br /># 执行 eclipse3.1.1<br />#<br />export JAVA_HOME=/usr/java/j2sdk1.4.2_04<br />export CLASSPATH=/usr/java/j2sdk1.4.2_04/lib<br />/usr/romeo/eclipse/eclipse -vm /usr/java/j2sdk1.4.2_04/bin/java -data ~/workspace &amp;<br /># -vm 参数用以指定使用哪一个 jvm 来执行Eclipse，<br /># -date参数用以指定Eclipse的数据目录。在此指定其存在用户根目录(~)下的workspace目录中<br />将eclipse.sh 复制到/usr/local/bin中，并为它加上权限755；现在执行 eclipse.sh 即可启动 Eclipse。 <br /><br />4桌面上建立快捷方式：<br /><br />  在桌面上按下鼠标右键，在弹出菜单中选择“新增启动”，之后分別在“名称”中输入Eclipse3.1、“命令”中填 /usr/local/bin/eclipse.sh，然后再为它随便找个喜欢的图标（我用的是/opt/eclipse/icon.xpm）;再后按 “确定”，桌面上就有eclipse的快捷方式了，以后可以直接双击这个图标启动Eclipse。<br />Eclipse 安装好后，已经内建了java开发环境（JDT）就可以直接开发Java 程序。<img src ="http://www.blogjava.net/hengheng123456789/aggbug/106388.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2007-03-26 14:07 <a href="http://www.blogjava.net/hengheng123456789/archive/2007/03/26/106388.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse 运行命令行参数大全（转）</title><link>http://www.blogjava.net/hengheng123456789/archive/2007/03/22/105582.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Thu, 22 Mar 2007 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2007/03/22/105582.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/105582.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2007/03/22/105582.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/105582.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/105582.html</trackback:ping><description><![CDATA[转自：<a href="http://beansoft.blogchina.com/"><font color="#1d58d1">http://beansoft.blogchina.com/</font></a><br /><br /><p>包括英文版本和中文版本两种的说明, 特别需要值得一提的是那个 -nl 参数, 可以指定程序启动时所使用的语言. 例如: <br />eclipse -nl en_US <br />将启动英文语言, 这个特性在安装了国际化语言包以后特别有用, 可以方便的切换各个语言的版本. 注意 IBM WSAD v5.1 也支持这个功能. <br /></p><h1><font size="3">运行 Eclipse</font></h1><p>将 Eclipse 驱动程序安装（解压缩）到某个目录（例如，c:\eclipse）中之后，通过运行顶级安装目录中的 Eclipse 可执行文件来启动"工作台"。在 Windows 系统上，该可执行文件称为 eclipse.exe，而在 Linux 系统上称为 eclipse。<strong>注意：</strong>下列讨论描述 Windows 系统上的设置。Linux 上的设置是相似的。 </p><p>如果您没有另行指定，则平台将缺省工作区目录创建为可执行文件的兄弟目录（例如 c:\eclipse\workspace）。此工作区目录用作项目的缺省内容区，还用于保存任何必需的元数据。要进行共享安装或多工作区安装，应明确指出工作区的位置而不是使用缺省值。有两种控制工作区位置的方法：使用当前工作目录或使用 -data 命令行自变量。</p><h3><font size="3">将工作区位置设置为在当前工作目录内</font></h3><p>在此方案中，工作区位置将是当前工作目录中称为 workspace 的目录。</p><p>实现此目的最容易的方法可能是使用下列步骤来创建快捷方式：</p><ol><li>导航到 Windows 资源管理器中的 eclipse.exe 并使用右键拖动来创建 eclipse.exe 的快捷方式。 
</li><li>编辑快捷方式的属性，以使<strong>启动位置：</strong>字段标识工作区位置的父目录（例如，c:\users\robert）。 
</li><li>关闭属性对话框并双击快捷方式（如果提供的目录为 c:\users\robert，则工作区位置将为 c:\users\robert\workspace）。 </li></ol><p>当然，您也可以使用命令提示符（通过将目录切换为工作区父目录然后运行 eclipse.exe）来获得同样的效果。</p><h3><font size="3">使用 -data 设置工作区的特定位置</font></h3><p>要使用 -data 命令行自变量，只要将 -data your_workspace_location（例如，-data c:\users\robert\myworkspace）添加至快捷方式属性中的<strong>目标</strong>字段或显式地将它包括在命令行上。 </p><h3><font size="3">使用 -vm 设置 java VM</font></h3><p>建议显式指定在运行 Eclipse 时要使用哪个 Java VM。使用 -vm 命令行自变量（例如，-vm c:\jre\bin\javaw.exe）可以实现此目的。如果不使用 -vm，则 Eclipse 将使用在 O/S 路径上找到的一个 Java VM。当安装其它产品时，它们可更改您的路径，导致在下一次启动 Eclipse 时使用另一 Java VM。</p><h2><font size="3">运行 Eclipse 中的高级主题</font></h2><p>Eclipse 可执行文件及平台本身提供了人们感兴趣的开发或调试 Eclipse 各部件的许多执行选项。运行 Eclipse 可执行文件的一般格式是：</p><blockquote><pre>eclipse [platform options] [-vmargs [Java VM arguments]]</pre></blockquote><table height="543" width="90%" border="1"><strong>&lt;&gt;Eclipse 启动参数 </strong><tbody><tr><strong>&lt;&gt;命令 <strong>描述</strong></strong><td width="2%"><strong>原因</strong></td></tr><tr><td valign="top" width="33%"><pre><strong>-arch</strong> architecture</pre></td><td width="65%">定义 Eclipse 平台在其上运行的处理器体系结构。Eclipse 平台通常使用 Java os.arch 属性的常用值来计算最佳设置。如果在此处指定该项，则这是 Eclipse 平台使用的值。此处指定的值可作为 BootLoader.getOSArch() 用于插件。示例值有："x86"、"sparc"、"PA-RISC"和"ppc"。</td><td width="2%">2.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-application</strong> applicationId</pre></td><td width="65%">要运行的应用程序。应用程序由向 org.eclipse.core.runtime.applications 扩展点提供扩展的插件来声明。通常不需要此自变量。如果指定了此项，则该值会覆盖配置提供的值。如果不指定此项，则会运行"Eclipse 工作台"。</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-boot</strong> bootJarURL</pre></td><td width="65%"><em>（建议不使用；用 -configuration 代替；支持 1.0 兼容）</em>。Eclipse 平台的引导插件代码（boot.jar）的位置，表示为 URL。如果指定此项，则会用它来为装入 Eclipse 平台引导程序类装入器的类装入器设置类路径。仅当更改 startup.jar 和 boot.jar 的相对位置时才需要它。注意，不允许使用相对 URL。 </td><td width="2%">*1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-classloaderproperties</strong> [file]</pre></td><td width="65%">如果指定的话，则使用给定位置处的类装入器属性文件来激活平台类类装入器增强。文件自变量可以是文件路径或 URL。注意，不允许使用相对 URL。单击<a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-core-home/docs/classloader-properties/classloader_properties.html"><font color="#0000ff">此处</font></a>以获得更多详细信息。 </td><td width="2%">2.0.2</td></tr><tr><td valign="top" width="33%"><pre><strong>-configuration</strong> configurationFileURL</pre></td><td width="65%">Eclipse 平台配置文件的位置，表示为 URL。配置文件确定 Eclipse 平台、可用插件集和主要功能部件的位置。注意，不允许使用相对 URL。当安装或更新 Eclipse 平台时配置文件被写至此位置。 </td><td width="2%">2.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-consolelog</strong></pre></td><td width="65%">将 Eclipse 平台的错误日志镜像到用来运行 Eclipse 的控制台。与 -debug 组合时很方便使用。</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-data</strong> workspacePath</pre></td><td width="65%">要运行 Eclipse 平台的工作区的路径。工作区位置也是项目的缺省位置。相对于从中启动 eclipse 的目录来解释相对路径。</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-debug</strong> [optionsFile]</pre></td><td width="65%">将平台置于调试方式，并从给定位置处的文件装入调试选项（如果指定的话）。此文件指示哪些调试点可用于插件以及是否已启用它们。如果未给出文件位置，则平台在启动 eclipse 的目录中查找称为".options"的文件。URL 和文件系统路径都可作为文件位置。</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-dev</strong> [classpathEntries]</pre></td><td width="65%">将平台置于开发方式。将可选类路径条目（用逗号分隔的列表）添加至每个插件的运行时类路径。例如，当工作区包含要开发的插件时，指定 -dev bin 会为每个插件项目的名为 bin 的目录添加类路径条目，允许在其中存储最新生成的类文件。除去了冗余或不存在的类路径条目。</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%" height="16"><pre><strong>-endsplash</strong> params</pre></td><td width="65%" height="16">用于在 Eclipse 平台启动并运行时关闭闪屏的内部选项。此选项在闪屏处理链中不同的位置有不同的语法和语义。</td><td width="2%" height="16">2.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-feature</strong><em>featureId</em></pre></td><td width="65%" height="16">主要功能部件的标识。主要功能部件为 Eclipse 的已启动实例提供了产品个性，并确定使用的产品定制信息。</td><td width="2%" height="16">2.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-keyring</strong> keyringFilePath</pre></td><td width="65%">磁盘上授权数据库（或"密钥环"文件）的位置。此自变量必须与 -password 选项配合使用。相对于从中启动 eclipse 的目录来解释相对路径。</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-nl</strong> locale</pre></td><td width="65%">定义 Eclipse 平台在其上运行的语言环境的名称。Eclipse 平台通常自动计算最佳设置。如果在此处指定该项，则这是 Eclipse 平台使用的值。此处指定的值可作为 BootLoader.getNL() 用于插件。示例值有："en_US"和"fr_FR_EURO"。</td><td width="2%">2.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-nolazyregistrycacheloading</strong></pre></td><td width="65%">取消激活装入优化的平台插件注册表高速缓存。缺省情况下，仅当需要时才从注册表高速缓存（可用时）中装入扩展的配置元素，以减少内存占用。此选项将在启动时强制完全装入注册表高速缓存。</td><td width="2%">2.1</td></tr><tr><td valign="top" width="33%"><pre><strong>-noregistrycache</strong></pre></td><td width="65%">绕过读写内部插件注册表高速缓存文件。</td><td width="2%">2.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-nosplash</strong></pre></td><td width="65%">运行平台而不显示闪屏。</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-os</strong> operatingSystem</pre></td><td width="65%">定义 Eclipse 平台在其上运行的操作系统。Eclipse 平台通常使用 Java os.name 属性的常用值来计算最佳设置。如果在此处指定该项，则这是 Eclipse 平台使用的值。此处指定的值可作为 BootLoader.getOS() 用于插件，并用于解析插件清单文件中提及的路径中 $os$ 变量的出现。示例值有："win32"、"linux"、"hpux"、"solaris"和"aix"。</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-password</strong> password</pre></td><td width="65%">授权数据库的密码。与 -keyring 选项配合使用。</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-perspective</strong> perspectiveId</pre></td><td width="65%">启动时要在活动工作台窗口中打开的透视图。如果没有指定该参数，则将打开关闭时活动的透视图。</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-plugincustomization</strong>
	  propertiesFile</pre></td><td width="65%">包含插件首选项缺省设置的属性文件的位置。这些缺省设置覆盖在主要功能部件中指定的缺省设置。相对于从中启动 eclipse 的目录来解释相对路径。</td><td width="2%">2.0</td></tr><tr><td valign="top" width="33%" height="16"><pre><strong>-plugins</strong> pluginsFileURL</pre></td><td width="65%" height="16"><em>（建议不使用；用 -configuration 代替；支持 1.0 兼容）。</em> 指定 Eclipse 平台查找插件的文件的位置，表示为 URL。该文件为属性文件格式，其中键是任意用户定义名称，值是指向 plugin.xml 文件的显式路径或指向包含插件的目录的路径的用逗号分隔的列表。注意，不允许使用相对 URL。如果指定此项，则此选项会导致创建适当的临时配置。 </td><td width="2%" height="16">*1.0</td></tr><tr><td valign="top" width="33%" height="16"><pre><strong>-refresh</strong></pre></td><td width="65%" height="16">启动时执行工作区的全局刷新的选项。这将使从上次平台运行以来在文件系统中所做的任何更改一致。</td><td width="2%" height="16">1.0</td></tr><tr><td valign="top" width="33%" height="16"><pre><strong>-showlocation</strong></pre></td><td width="65%" height="16">用于在窗口标题栏中显示工作区的位置的选项。在发行版 2.0 中，此选项仅与 -data 命令行自变量一起使用。</td><td width="2%" height="16">2.0</td></tr><tr><td valign="top" width="33%" height="16"><pre><strong>-showsplash</strong> params</pre></td><td width="65%" height="16">用于显示闪屏（由可执行的 Eclipse 平台启动器执行）的内部选项。此选项在闪屏处理链中不同的位置有不同的语法和语义。</td><td width="2%" height="16">2.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-vm</strong> vmPath</pre></td><td width="65%">要用来运行 Eclipse 平台的"Java 运行时环境"（JRE）的位置。如果不指定此项，则 JRE 位于 jre（它是 Eclipse 可执行文件的兄弟目录）。相对于从中启动 eclipse 的目录来解释相对路径。</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-ws</strong> windowSystem</pre></td><td width="65%">定义 Eclipse 平台在其上运行的 Windows 系统。Eclipse 平台通常使用 Java os.name 属性的常用值来计算最佳设置。如果在此处指定该项，则这是 Eclipse 平台使用的值。此处指定的值可作为 BootLoader.getWS() 用于插件、用于配置 SWT 以及用于解析插件清单文件中提及的路径中 $ws$ 变量的出现。示例值有："win32"、"motif"和"gtk"。</td><td width="2%">1.0</td></tr></tbody></table><p>将 -vmargs 条目后面的所有自变量（但不包括 -vmargs）作为虚拟机自变量（即，在要运行的类的前面）直接传递到所指示的 Java VM。<strong>注意：</strong>如果 Eclipse 启动在 Java vm 自变量（-vmargs）之后提供的自变量（例如，-data），则 Eclipse 将不会启动并且您将接收到"JVM 已终止。出口代码为 1"的错误。 </p><h2><font size="3">在不同的 VM 上运行 </font></h2><h3><font size="3">在 J9 上运行 Eclipse</font></h3><p>当在 J9 版本 1.5 上运行 Eclipse 时，建议使用以下 VM 选项： </p><blockquote><pre>eclipse.exe [eclipse arguments] -vm path_to_j9w.exe 
            -vmargs -ms:32 -mm:2048 -mo:32768 -moi:32768 -mca:32 -mco:128 -mx:2000000</pre></blockquote><p>当在 J9 版本 2.0 上运行 Eclipse 时，J9W 选择的缺省自变量应为合适的选项。但是，要覆盖 Eclipse 可执行文件以内部方式自动设置的参数，必须指定 -vmargs 不带任何参数，如下所示： </p><blockquote><pre>eclipse.exe [eclipse arguments] -vm path_to_j9w.exe -vmargs</pre></blockquote><p>有关进一步信息，参考 J9 VM 文档和帮助。</p><h3><font size="3">在 IBM Developer Kit, Java(TM) Technology Edition VM 上运行 Eclipse</font></h3><p>IBM Developer Kit, Java(TM) Technology Edition 1.3 Linux 的缺省 VM 设置适合进行初期研究工作，但在进行大型开发时是不够的。对于大型开发，应修改 VM 自变量以使有更多的堆可用。例如，下列设置将允许 Java 堆增大为 256MB：</p><blockquote><pre>-vmargs -Xmx256M </pre></blockquote><p><br /><a href="http://blog.blogchina.com../hglegal2003.htm"><img height="14" alt="Copyright IBM Corporation and others 2000, 2003" src="http://blog.blogchina.comc:/DOCUME%7E1/vip/LOCALS%7E1/Temp/CodeWeb/171_FI%7E1/help/topic/ORGECL%7E1.USE/images/ngibmcpy2003_.gif" width="324" border="0" /></a><br /></p><h1><font size="3">Running Eclipse</font></h1><p>After you install (unzip) the Eclipse driver in a directory (such as c:\eclipse), start the Workbench by running the Eclipse executable file found in the top level install directory. The executable file is called eclipse.exe on Windows systems and eclipse on Linux systems. <strong>Note:</strong> the following discussion describes setting up on Windows systems. Setup on Linux is analogous. </p><p>If you do not specify otherwise, the platform creates a default workspace directory as a sibling of the executable (for example, c:\eclipse\workspace). This workspace directory is used as the default content area for your projects as well as for holding any required metadata. For shared or multi-workspace installs you should explicitly state the location of your workspace rather than using the default. There are two ways to control the location of your workspace: using the current working directory or using the -data command line argument.</p><h3><font size="3">Setting the workspace location to be inside the current working directory</font></h3><p>In this scenario, the workspace location will be a directory called workspace inside the current working directory.</p><p>Perhaps the easiest way of doing this is to create a shortcut using the following steps:</p><ol><li>Navigate to eclipse.exe in the Windows Explorer and using a right button drag, create a shortcut to eclipse.exe. 
</li><li>Edit the properties of the shortcut such that the <strong>Start in:</strong> field identifies the parent directory of your workspace location (for example, c:\users\robert). 
</li><li>Close the properties dialog and double-click on the shortcut (if the provided directory was c:\users\robert, the workspace location would be c:\users\robert\workspace). </li></ol><p>Of course you can get the same effect using a command prompt by changing directory to your workspace parent's directory and then running eclipse.exe.</p><h3><font size="3">Setting a specific location for the workspace with -data</font></h3><p>To use the -data command line argument, simply add -data your_workspace_location (for example, -data c:\users\robert\myworkspace) to the <strong>Target</strong> field in the shortcut properties, or include it explicitly on your command line. </p><h3><font size="3">Setting the java VM using -vm</font></h3><p>It is recommended that you explicitly specify which Java VM to use when running Eclipse. This is achieved with the -vm command line argument (for example, -vm c:\jre\bin\javaw.exe). If you don't use -vm, Eclipse will use the first Java VM found on the O/S path. When you install other products, they may change your path, resulting in a different Java VM being used when you next launch Eclipse. </p><h2><font size="3">Advanced Topics in Running Eclipse </font></h2><p>The Eclipse executable and the platform itself offer a number of execution options of interest to people developing or debugging parts of Eclipse. The general form of running the Eclipse executable is:</p><blockquote><pre>eclipse [platform options] [-vmargs [Java VM arguments]]</pre></blockquote><table height="543" width="90%" border="1"><strong>&lt;&gt;Eclipse Startup Parameters </strong><tbody><tr><strong>&lt;&gt;Command <strong>Description</strong></strong><td width="2%"><strong>Since</strong></td></tr><tr><td valign="top" width="33%"><pre><strong>-arch</strong> architecture</pre></td><td width="65%">Defines the processor architecture on which the Eclipse platform is running. The Eclipse platform ordinarily computes the optimal setting using the prevailing value of Java os.arch property. If specified here, this is the value that the Eclipse platform uses. The value specified here is available to plug-ins as BootLoader.getOSArch(). Example values: "x86", "sparc", "PA-RISC", "ppc".</td><td width="2%">2.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-application</strong> applicationId</pre></td><td width="65%">The application to run. Applications are declared by plug-ins supplying extensions to the org.eclipse.core.runtime.applications extension point. This argument is typically not needed. If specified, the value overrides the value supplied by the configuration. If not specified, the Eclipse Workbench is run.</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-boot</strong> bootJarURL</pre></td><td width="65%"><em>(Deprecated; replaced by -configuration; supported for 1.0 compatibility)</em>. The location of the Eclipse platform's boot plug-in code (boot.jar), expressed as a URL. If specified, it is used to set the classpath for the class loader that loads the Eclipse platform bootstrap class loader. Only required when changing the relative location of startup.jar and boot.jar. Note that relative URLs are not allowed. </td><td width="2%">*1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-classloaderproperties</strong> [file]</pre></td><td width="65%">Activates platform class loader enhancements using the class loader properties file at the given location, if specified. The file argument can be either a file path or a URL. Note that relative URLs are not allowed. Click <a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-core-home/docs/classloader-properties/classloader_properties.html"><font color="#0000ff">here</font></a> for more details. </td><td width="2%">2.0.2</td></tr><tr><td valign="top" width="33%"><pre><strong>-configuration</strong> configurationFileURL</pre></td><td width="65%">The location for the Eclipse Platform configuration file, expressed as a URL. The configuration file determines the location of the Eclipse platform, the set of available plug-ins, and the primary feature. Note that relative URLs are not allowed. The configuration file is written to this location when the Eclipse platform is installed or updated. </td><td width="2%">2.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-consolelog</strong></pre></td><td width="65%">Mirrors the Eclipse platform's error log to the console used to run Eclipse. Handy when combined with -debug.</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-data</strong> workspacePath</pre></td><td width="65%">The path of the workspace on which to run the Eclipse platform. The workspace location is also the default location for projects. Relative paths are interpreted relative to the directory that Eclipse was started from.</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-debug</strong> [optionsFile]</pre></td><td width="65%">Puts the platform in debug mode and loads the debug options from the file at the given location, if specified. This file indicates which debug points are available for a plug-in and whether or not they are enabled. If a file location is not given, the platform looks in the directory that eclipse was started from for a file called ".options". Both URLs and file system paths are allowed as file locations. </td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-dev</strong> [classpathEntries]</pre></td><td width="65%">Puts the platform in development mode. The optional classpath entries (a comma separated list) are added to the runtime classpath of each plug-in. For example, when the workspace contains plug-ins being developed, specifying -dev bin adds a classpath entry for each plug-in project's directory named bin, allowing freshly generated class files to be found there. Redundant or non-existent classpath entries are eliminated.</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%" height="16"><pre><strong>-endsplash</strong> params</pre></td><td width="65%" height="16">Internal option for taking down the splash screen when the Eclipse platform is up and running. This option has different syntax and semantics at various points along the splash screen processing chain.</td><td width="2%" height="16">2.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-feature</strong><em>featureId</em></pre></td><td width="65%" height="16">The ID of the primary feature. The primary feature gives the launched instance of Eclipse its product personality, and determines the product customization information used.</td><td width="2%" height="16">2.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-keyring</strong> keyringFilePath</pre></td><td width="65%">The location of the authorization database (or "key ring" file) on disk. This argument must be used in conjunction with the -password option. Relative paths are interpreted relative to the directory that Eclipse was started from.</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-nl</strong> locale</pre></td><td width="65%">Defines the name of the locale on which the Eclipse platform is running. The Eclipse platform ordinarily computes the optimal setting automatically. If specified here, this is the value that the Eclipse platform uses. The value specified here is available to plug-ins as BootLoader.getNL(). Example values: "en_US" and "fr_FR_EURO".</td><td width="2%">2.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-nolazyregistrycacheloading</strong></pre></td><td width="65%">Deactivates platform plug-in registry cache loading optimization. By default, extensions' configuration elements will be loaded from the registry cache (when available) only on demand, reducing memory footprint. This option will force the registry cache to be fully loaded at startup.</td><td width="2%">2.1</td></tr><tr><td valign="top" width="33%"><pre><strong>-noregistrycache</strong></pre></td><td width="65%">Bypasses the reading and writing of an internal plug-in registry cache file.</td><td width="2%">2.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-nosplash</strong></pre></td><td width="65%">Runs the platform without putting up the splash screen.</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-os</strong> operatingSystem</pre></td><td width="65%">Defines the operating system on which the Eclipse platform is running. The Eclipse platform ordinarily computes the optimal setting using the prevailing value of Java os.name property. If specified here, this is the value that the Eclipse platform uses. The value specified here is available to plug-ins as BootLoader.getOS(), and used to resolve occurrences of the $os$ variable in paths mentioned in the plug-in manifest file. Example values: "win32", "linux", "hpux", "solaris", "aix".</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-password</strong> password</pre></td><td width="65%">The password for the authorization database. Used in conjunction with the -keyring option.</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-perspective</strong> perspectiveId</pre></td><td width="65%">The perspective to open in the active workbench window on startup. If this parameter is not specified, the perspective that was active on shutdown will be opened.</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-plugincustomization</strong>
	  propertiesFile</pre></td><td width="65%">The location of a properties file containing default settings for plug-in preferences. These default settings override default settings specified in the primary feature. Relative paths are interpreted relative to the directory that eclipse was started from.</td><td width="2%">2.0</td></tr><tr><td valign="top" width="33%" height="16"><pre><strong>-plugins</strong> pluginsFileURL</pre></td><td width="65%" height="16"><em>(Deprecated; replaced by -configuration; supported for 1.0 compatibility).</em> The location of the file that specifies where the Eclipse platform finds plug-ins, expressed as a URL. The file is in property file format where the keys are arbitrary user defined names and the values are comma separated lists of either explicit paths to plugin.xml files, or paths to directories containing plug-ins. Note that relative URLs are not allowed. If specified, this option causes the creation of a suitable temporary configuration. </td><td width="2%" height="16">*1.0</td></tr><tr><td valign="top" width="33%" height="16"><pre><strong>-refresh</strong></pre></td><td width="65%" height="16">Option for performing a global refresh of the workspace on startup. This will reconcile any changes that were made in the file system since the platform was last run. </td><td width="2%" height="16">1.0</td></tr><tr><td valign="top" width="33%" height="16"><pre><strong>-showlocation</strong></pre></td><td width="65%" height="16">Option for displaying the location of the workspace in the window title bar. In release 2.0 this option only worked in conjunction with the -data command line argument.</td><td width="2%" height="16">2.0</td></tr><tr><td valign="top" width="33%" height="16"><pre><strong>-showsplash</strong> params</pre></td><td width="65%" height="16">Internal option for showing the splash screen (done by the executable Eclipse platform launcher). This option has different syntax and semantics at various points along the splash screen processing chain.</td><td width="2%" height="16">2.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-vm</strong> vmPath</pre></td><td width="65%">The location of Java Runtime Environment (JRE) to use to run the Eclipse platform. If not specified, the JRE is at jre, sibling of the Eclipse executable. Relative paths are interpreted relative to the directory that eclipse was started from.</td><td width="2%">1.0</td></tr><tr><td valign="top" width="33%"><pre><strong>-ws</strong> windowSystem</pre></td><td width="65%">Defines the window system on which the Eclipse platform is running. The Eclipse platform ordinarily computes the optimal setting using the prevailing value of Java os.name property. If specified here, this is the value that the Eclipse platform uses. The value specified here is available to plug-ins as BootLoader.getWS(), used to configure SWT, and used to resolve occurrences of the $ws$ variable in paths mentioned in the plug-in manifest file. Example values: "win32", "motif", "gtk".</td><td width="2%">1.0</td></tr></tbody></table><p>All arguments following (but not including) the -vmargs entry are passed directly through to the indicated Java VM as virtual machine arguments (that is, before the class to run). <strong>Note:</strong> If an Eclipse startup argument, such as -data, is provided after the Java vm arguments (-vmargs), Eclipse will not start and you will receive a "JVM terminated. Exit code=1" error. </p><h2><font size="3">Running on Different VMs </font></h2><h3><font size="3">Running Eclipse on J9</font></h3><p>When running Eclipse on J9 version 1.5, it is recommended that you use the following VM options: </p><blockquote><pre>eclipse.exe [eclipse arguments] -vm path_to_j9w.exe 
            -vmargs -ms:32 -mm:2048 -mo:32768 -moi:32768 -mca:32 -mco:128 -mx:2000000</pre></blockquote><p>When running Eclipse on J9 version 2.0, the default arguments chosen by J9W should be suitable. However, to override the parameters which are automatically set internally by the Eclipse executable, you must specify -vmargs with no following arguments as follows: </p><blockquote><pre>eclipse.exe [eclipse arguments] -vm path_to_j9w.exe -vmargs</pre></blockquote><p>Please refer to the J9 VM documentation and help for further information.</p><h3><font size="3">Running Eclipse on the IBM Developer Kit, Java(TM) Technology Edition VM</font></h3><p>The default VM settings for IBM Developer Kit, Java(TM) Technology Edition 1.3 Linux work well for initial exploration, but are not sufficient for large scale development. For large scale development you should modify your VM arguments to make more heap available. For example, the following setting will allow the Java heap to grow to 256MB:  </p><blockquote><pre>-vmargs -Xmx256M </pre></blockquote><p>  </p><img src ="http://www.blogjava.net/hengheng123456789/aggbug/105582.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2007-03-22 16:33 <a href="http://www.blogjava.net/hengheng123456789/archive/2007/03/22/105582.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在eclipse中获得当前所有打开的editor实例列表</title><link>http://www.blogjava.net/hengheng123456789/archive/2007/02/13/99665.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Tue, 13 Feb 2007 04:19:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2007/02/13/99665.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/99665.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2007/02/13/99665.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/99665.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/99665.html</trackback:ping><description><![CDATA[
		<p>
				<a href="http://www.cnblogs.com/youngerbaby/archive/2006/10/16/530268.html">http://www.cnblogs.com/youngerbaby/archive/2006/10/16/530268.html</a>
				<br />
				<br />EditorPart[] parts = <br />PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditors(); 
</p>
		<p>
		</p>
		<p>或者 
</p>
		<p>IEditorReference[] parts = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences();</p>
<img src ="http://www.blogjava.net/hengheng123456789/aggbug/99665.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2007-02-13 12:19 <a href="http://www.blogjava.net/hengheng123456789/archive/2007/02/13/99665.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提高代码质量的Eclipse插件之Metrics</title><link>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96694.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Tue, 30 Jan 2007 04:37:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96694.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/96694.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96694.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/96694.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/96694.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Metrics是一个十分强大的分析工具，主要分析代码的复杂性。同时可以统计如包的依赖性、代码的有效行数、方法的有效行数、包的数量、属性的数量等等。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96694.html'>阅读全文</a><img src ="http://www.blogjava.net/hengheng123456789/aggbug/96694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2007-01-30 12:37 <a href="http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96694.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提高代码质量的Eclipse插件之Coverlipse</title><link>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96689.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Tue, 30 Jan 2007 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96689.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/96689.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96689.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/96689.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/96689.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Coverlipse能够把JUnit测试的代码覆盖直观化。它的独到之处就是与Eclipse开发平台无缝结合。Coverlipse能够在一个JUnit运行之后马上显示覆盖结果并可把结果导成XML文件。<br>参考：http://blog.csdn.net/JackieCong/archive/2006/06/22/820504.aspx<br>感谢作者：如来&nbsp;&nbsp;<a href='http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96689.html'>阅读全文</a><img src ="http://www.blogjava.net/hengheng123456789/aggbug/96689.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2007-01-30 11:20 <a href="http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96689.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提高代码质量的Eclipse插件之CPD</title><link>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96684.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Tue, 30 Jan 2007 03:06:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96684.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/96684.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96684.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/96684.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/96684.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 插件PMD提供了一项叫作CPD的很有用的功能，它检查代码的拷贝粘贴部分，能够查找到重复代码，有利于代码的重构。<br>本文参考了：http://blog.csdn.net/yuanqingfei/archive/2005/02/04/281069.aspx<br>感谢作者：ZDNet China&nbsp;&nbsp;<a href='http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96684.html'>阅读全文</a><img src ="http://www.blogjava.net/hengheng123456789/aggbug/96684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2007-01-30 11:06 <a href="http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96684.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提高代码质量的Eclipse插件之CheckStyle</title><link>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96679.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Tue, 30 Jan 2007 02:29:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96679.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/96679.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96679.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/96679.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/96679.html</trackback:ping><description><![CDATA[
		<div>
				<p>CheckStyle相信许多人都用过，十分简单方便，能够根据设定，检查所有代码是否按照项目组规定的格式书写代码。它检查如下部分：</p>
		</div>
		<ul>
				<li>
						<div>          Javadoc注释</div>
				</li>
				<li>
						<div>          命名约定</div>
				</li>
				<li>
						<div>          标题</div>
				</li>
				<li>
						<div>          Import语句</div>
				</li>
				<li>
						<div>          体积大小</div>
				</li>
				<li>
						<div>          空白</div>
				</li>
				<li>
						<div>          修饰符</div>
				</li>
				<li>
						<div>          块</div>
				</li>
				<li>
						<div>          混合检查（包活一些有用的比如非必须的System.out和printstackTrace）</div>
				</li>
		</ul>
		<p>具体使用步骤如下：<br /><br />1、右键选择需要分析的项目，选择<strong>Properties</strong><br /><br />2、按照图示选择<strong>CheckStyle</strong> 项的 <strong>CheckStyle active for this project</strong><br /><img height="456" alt="Configuring CheckStyle pluging in Eclipse" src="http://www-128.ibm.com/developerworks/java/library/j-ap01117/checkstyle-config.jpg" width="572" /><br /><br />3、选择OK后，项目会被重新编译，如图以黄色背景显示不符合设定规范的代码段。<br /><img height="412" alt="List if CheckStyle violations within Eclipse" src="http://www-128.ibm.com/developerworks/java/library/j-ap01117/checkstyle-eclipse.jpg" width="572" /><br /><br />这样在项目完成后，将会得到统一规范的源代码了。</p>
<img src ="http://www.blogjava.net/hengheng123456789/aggbug/96679.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2007-01-30 10:29 <a href="http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96679.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提高代码质量的Eclipse插件之JDepend</title><link>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96675.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Tue, 30 Jan 2007 02:08:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96675.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/96675.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96675.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/96675.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/96675.html</trackback:ping><description><![CDATA[我们在开发Java项目时经常会遇到关于包混乱的问题，特别是在架构更改后，这样的问题尤为突出，JDepend工具可以帮助你在开发过程中随时跟踪每个包的依赖性（引用/被引用），从而设计高维护性的架构，不论是在打包发布还是版本升级都会更加轻松。<br />本文引自<a href="http://starrynight.blogdriver.com/starrynight/606590.html"><font color="#444444">http://starrynight.blogdriver.com/starrynight/606590.html</font></a>，并增加了些自己的见解，感谢<u><font color="#800080">starrynight</font></u><br /><br /><p>JDepend是一个开源的工具，并配有Eclipse插件，在实际应用中，JDepend遍历所有的Java代码目录，自动生成每个Package的依赖性度量。对于可扩展性、可重用性和可管理性，JDepend可自动度量一个设计在以上三个方面的质量。<br /><br />Eclipse插件的下载地址为：<a href="http://andrei.gmxhome.de/eclipse/"><font color="#444444">http://andrei.gmxhome.de/eclipse/</font></a><br /><br />运行方法是右键选择需要分析的包，选择 <strong>Run JDepend Analysis</strong><br /><img height="521" alt="Analyzing code using JDepend Analysis" src="http://www-128.ibm.com/developerworks/java/library/j-ap01117/run-jdepend.jpg" width="306" /><br /><br />于是会出现如下分析结果<br /><img height="412" alt="Package dependencies for project within Eclipse" src="http://www-128.ibm.com/developerworks/java/library/j-ap01117/jdepend-report.jpg" width="572" /><br /><br />JDepend为每个Package自动生成的<span style="FONT-WEIGHT: bold">依赖性度量指标</span>，包括：<br /></p><ul><li><span style="FONT-WEIGHT: bold">Number of Classes (Cc)</span></li></ul><div style="MARGIN-LEFT: 40px">被分析package的具体和抽象类（和接口）的数量，用于衡量package的可扩展性。<br />如果一个类中实现了其他类，如实现了监听类，则监听类的数目也记录在此。<br />例如：<br />    private IPartListener partListener = new IPartListener() {<br />        public void partActivated(IWorkbenchPart part) {<br />            if (part instanceof IEditorPart)<br />                editorActivated((IEditorPart) part);<br />        }</div><div style="MARGIN-LEFT: 40px">        public void partBroughtToTop(IWorkbenchPart part) {<br />        }</div><div style="MARGIN-LEFT: 40px">        public void partClosed(IWorkbenchPart part) {<br />        }</div><div style="MARGIN-LEFT: 40px">        public void partDeactivated(IWorkbenchPart part) {<br />        }</div><div style="MARGIN-LEFT: 40px">        public void partOpened(IWorkbenchPart part) {<br />        }<br />    };<br /></div><ul><li><span style="FONT-WEIGHT: bold">Afferent Couplings (Ca)</span></li></ul><div style="MARGIN-LEFT: 40px">依赖于被分析package的其他package的数量，用于衡量pacakge的职责。<br />即有多少包调用了它。<br /><br /></div><ul style="FONT-WEIGHT: bold"><li>Efferent Couplings (Ce)</li></ul><div style="MARGIN-LEFT: 40px">被分析package的类所依赖的其他package的数量，用于衡量package的独立性。<br />即它调用了多少其他包。<br /></div><ul style="FONT-WEIGHT: bold"><li>Abstractness (A)</li></ul><div style="MARGIN-LEFT: 40px">被分析package中的抽象类和接口与所在package所有类数量的比例，取值范围为0－1。<br /></div><ul style="FONT-WEIGHT: bold"><li>Instability (I)</li></ul><div style="MARGIN-LEFT: 40px">I＝Ce/（Ce＋Ca），用于衡量package的不稳定性，取值范围为0－1。I＝0表示最稳定，I＝1表示最不稳定。<br />即如果这个类不调用任何其他包，则它是最稳定的。<br /></div><ul><li><span style="FONT-WEIGHT: bold">Distance (D)<br /></span></li></ul><div style="MARGIN-LEFT: 40px">被分析package和理想曲线A＋I＝1的垂直距离，用于衡量package在稳定性和抽象性之间的平衡。理想的package要么完全是抽象类和稳定（x＝0，y＝1），要么完全是具体类和不稳定（x＝1，y＝0）。<br />取值范围为0－1，D＝0表示完全符合理想标准，D＝1表示package最大程度地偏离了理想标准。<br />即你的包要么全是接口，不调用任何其他包（完全是抽象类和稳定），要么是具体类，不被任何其他包调用。<br /><br /><br /></div><span style="FONT-WEIGHT: bold">为什么使用JDepend<br /></span><ul><li>评价设计质量 
</li><li>翻转依赖性 
</li><li>支持并行开发和极限编程 
</li><li>独立的发布模块 
</li><li>识别package的循环依赖<br /></li></ul><span style="FONT-WEIGHT: bold"><span style="FONT-WEIGHT: bold"></span></span><br /><br /><span style="FONT-WEIGHT: bold">安装JDepend<br /><span style="FONT-WEIGHT: bold"></span><br /></span>安装JDepend很简单，只需下载jdepend-<version>.zip并解压缩，然后把jdepend-<version>.jar加入系统类路径。<br /><br /><br /><span style="FONT-WEIGHT: bold">和Ant集成<br /></span></version></version><ul><li><target name="jdepend" depends="compile"><jdepend format="xml" outputfile="${jdepend.log.dir}/jdepend-report.xml"><exclude name="java.*"><exclude name="javax.*"><exclude name="org.*"><exclude name="junit.*"><exclude name="net.*"><exclude name="mx4j.*"><exclude name="com.anmeng.*"><exclude name="testdomain.*"><exclude name="thinlet.*"><exclude name="**/*Test*"><classpath refid="classpath.lib"><classespath location="${classes.main}" /></classpath><span style="FONT-WEIGHT: bold">设置JDepend报告目录</span></exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></jdepend></target><br /></li></ul><target name="jdepend" depends="compile"><jdepend format="xml" outputfile="${jdepend.log.dir}/jdepend-report.xml"><exclude name="java.*"><exclude name="javax.*"><exclude name="org.*"><exclude name="junit.*"><exclude name="net.*"><exclude name="mx4j.*"><exclude name="com.anmeng.*"><exclude name="testdomain.*"><exclude name="thinlet.*"><exclude name="**/*Test*">&lt;property name="jdepend.log.dir" value="${tomcat.home}/webapps/cruisecontrol/jdepend" /&gt;<br /></exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></jdepend></target><ul style="FONT-WEIGHT: bold"><li><target name="jdepend" depends="compile"><jdepend format="xml" outputfile="${jdepend.log.dir}/jdepend-report.xml"><exclude name="java.*"><exclude name="javax.*"><exclude name="org.*"><exclude name="junit.*"><exclude name="net.*"><exclude name="mx4j.*"><exclude name="com.anmeng.*"><exclude name="testdomain.*"><exclude name="thinlet.*"><exclude name="**/*Test*">定义jdepend task</exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></jdepend></target></li></ul><target name="jdepend" depends="compile"><jdepend format="xml" outputfile="${jdepend.log.dir}/jdepend-report.xml"><exclude name="java.*"><exclude name="javax.*"><exclude name="org.*"><exclude name="junit.*"><exclude name="net.*"><exclude name="mx4j.*"><exclude name="com.anmeng.*"><exclude name="testdomain.*"><exclude name="thinlet.*"><exclude name="**/*Test*">&lt;taskdef name="jdepend" classname="org.apache.tools.ant.taskdefs.optional.jdepend.JDependTask"&gt;<br />       &lt;classpath refid="classpath.lib" /&gt;<br />&lt;/taskdef&gt;<br /></exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></jdepend></target><ul style="FONT-WEIGHT: bold"><li><target name="jdepend" depends="compile"><jdepend format="xml" outputfile="${jdepend.log.dir}/jdepend-report.xml"><exclude name="java.*"><exclude name="javax.*"><exclude name="org.*"><exclude name="junit.*"><exclude name="net.*"><exclude name="mx4j.*"><exclude name="com.anmeng.*"><exclude name="testdomain.*"><exclude name="thinlet.*"><exclude name="**/*Test*">生成jdepend报告</exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></jdepend></target></li></ul><target name="jdepend" depends="compile"><jdepend format="xml" outputfile="${jdepend.log.dir}/jdepend-report.xml"><exclude name="java.*"><exclude name="javax.*"><exclude name="org.*"><exclude name="junit.*"><exclude name="net.*"><exclude name="mx4j.*"><exclude name="com.anmeng.*"><exclude name="testdomain.*"><exclude name="thinlet.*"><exclude name="**/*Test*">&lt;target name="jdepend" depends="compile"&gt;<br />    &lt;jdepend format="xml" outputfile="${jdepend.log.dir}/jdepend-report.xml"&gt;<br />        &lt;exclude name="java.*"/&gt;<br />        &lt;exclude name="javax.*"/&gt;<br />        &lt;exclude name="org.*"/&gt;<br />        &lt;exclude name="junit.*"/&gt;<br />        &lt;exclude name="net.*"/&gt;<br />        &lt;exclude name="mx4j.*"/&gt;<br />        &lt;exclude name="com.anmeng.*"/&gt;<br />        &lt;exclude name="testdomain.*"/&gt;<br />        &lt;exclude name="thinlet.*"/&gt;<br />        &lt;exclude name="**/*Test*"/&gt;<br />        &lt;classpath refid="classpath.lib" /&gt;<br />        &lt;classespath location="${classes.main}" /&gt;<br />    &lt;/jdepend&gt;<br />    &lt;style basedir="${jdepend.log.dir}" destdir="${jdepend.log.dir}"<br />            includes="jdepend-report.xml"<br />            style="${jdepend.log.dir}/jdepend.xsl"&gt;<br />        &lt;classpath refid="ant.lib" /&gt;<br />    &lt;/style&gt;<br />&lt;/target&gt;<br /><br style="FONT-WEIGHT: bold" /><span style="FONT-WEIGHT: bold">集成CruiseControl</span><br />在</exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></exclude></jdepend></target>CruiseControl的buildresults.jsp文件中加入：<br />&lt;cruisecontrol:xsl xslFile="/xsl/jdepend.xsl"/&gt;<br /><img src ="http://www.blogjava.net/hengheng123456789/aggbug/96675.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2007-01-30 10:08 <a href="http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96675.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提高代码质量的Eclipse插件之概述</title><link>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96674.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Tue, 30 Jan 2007 02:07:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96674.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/96674.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96674.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/96674.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/96674.html</trackback:ping><description><![CDATA[我们在开发过程中都希望得到的代码都是易维护的，这里将介绍几个十分好用的Eclipse插件，用于规范和分析您的代码。<br />本文引自：<a href="http://www-128.ibm.com/developerworks/java/library/j-ap01117/index.html">http://www-128.ibm.com/developerworks/java/library/j-ap01117/index.html</a><br />衷心感谢<a href="http://www-128.ibm.com/developerworks/java/library/j-ap01117/index.html#author"><font color="#996699">Paul Duvall</font></a> (<a href="mailto:paul.duvall@stelligent.com?subject=Improving code with Eclipse plugins"><font color="#5c81a7">paul.duvall@stelligent.com</font></a>)大师！<br /><br />大师向我们介绍了五个工具：<br /><li>CheckStyle: 规范代码式样和格式。 
</li><li>PMD's CPD: 检查代码是否重复。 
</li><li>Coverlipse: 验证测试代码的覆盖率。 
</li><li>JDepend: 提供代码包的依赖性分析。 
</li><li>Eclipse Metrics plugin: 控制代码的复杂度。</li><p>它们的下载地址如下：<br /><br /></p><table class="data-table-1" cellspacing="0" cellpadding="0" width="100%" summary="Table using a caption tag, alternating color rows" border="0"><tbody><tr><th>Tool</th><th>Purpose</th><th>URL for Eclipse plugin</th></tr><tr><td class="tb-row">CheckStyle</td><td>Coding standard analysis</td><td>http://eclipse-cs.sourceforge.net/update/</td></tr><tr class="alt-row"><td class="tb-row">Coverlipse</td><td>Test code coverage</td><td>http://coverlipse.sf.net/update</td></tr><tr><td class="tb-row">CPD</td><td>Copy/Paste detection</td><td>http://pmd.sourceforge.net/eclipse/</td></tr><tr class="alt-row"><td class="tb-row">JDepend</td><td>Package dependency analysis</td><td>http://andrei.gmxhome.de/eclipse/</td></tr><tr><td class="tb-row">Metrics</td><td>Complexity monitoring</td><td>http://metrics.sourceforge.net/update</td></tr></tbody></table><br /><br />下载方法：<br />1、选择Eclipse的<strong>Help | Software Updates | Find and Install<br /><img height="200" alt="Finding and Installing an Eclipse plugin" src="http://www-128.ibm.com/developerworks/java/library/j-ap01117/findinstall-plugin.jpg" width="572" /><br /><br /></strong>2、选择 <strong>Search for new features to install</strong><br /><br />3、选择<strong>New Remote Site按钮，</strong>并输入地址<br /><img height="151" alt="Configuring a new Remote Site" src="http://www-128.ibm.com/developerworks/java/library/j-ap01117/pmd-remotesite.jpg" width="353" /><br /><br />4、选择<strong>Finish</strong>按钮结束安装。<br /><img height="476" alt="Installing the Eclipse plugin" src="http://www-128.ibm.com/developerworks/java/library/j-ap01117/pmd-updates.jpg" width="572" /><br /><br /><br />在后续文章中将分别介绍这五个工具的简单使用方法。<img src ="http://www.blogjava.net/hengheng123456789/aggbug/96674.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2007-01-30 10:07 <a href="http://www.blogjava.net/hengheng123456789/archive/2007/01/30/96674.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简便更改Eclipse的Title标题/标题图标/启动画面/帮助信息</title><link>http://www.blogjava.net/hengheng123456789/archive/2006/12/15/87969.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Fri, 15 Dec 2006 08:02:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2006/12/15/87969.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/87969.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2006/12/15/87969.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/87969.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/87969.html</trackback:ping><description><![CDATA[
		<p>   前两天在“小小凉粉”的《动态改变RCP应用程序的标题》一文中看到了如何改变RCP程序的Title标题，提示和帮助很大，今天我又找到了一个方便的更改Eclipse的Title标题/标题图标/启动画面/帮助信息的方法，配置好后，只需更改plugin.properties 文件中的内容即可更改Eclipse的Title标题等，现与大家分享一下，请大家多多指教：）<br /><br />   我的实现步骤如下：<br /><br />1、新建立一个plug-in project，在这里我起名为com.yourcompany.yourproduct<br />2、更改plugin.xml文件为如下：<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;?eclipse version="3.0"?&gt;<br />&lt;plugin&gt;<br /><font color="#008000">   &lt;!-- 设置扩展点为org.eclipse.core.runtime.products，这样Eclipse程序就会应用此入口来运行，id可以任意设置，注意后面会用到此id --&gt;<br /></font>   &lt;extension point="org.eclipse.core.runtime.products"  id="<font color="#ff0000">yours</font>"&gt;<br /><font color="#008000">      &lt;!-- 在这里可以设置你的程序名称，这里设置为%productName，表示可以在plugin.properties文件中通过设置productName项随时更改你的程序名称 --&gt;</font><br />      &lt;product name="%productName" application="org.eclipse.ui.ide.workbench"&gt;<br /><font color="#008000">         &lt;!-- 这里可以设置Eclipse的Title标题前面的图标，前面的为16*16的图标，后面为32*32的图标 --&gt;</font><br />         &lt;property name="windowImages" value="icons/eclipse.gif,icons/eclipse32.gif"/&gt;<br /><font color="#008000">         &lt;!-- 这里设置帮助文字 --&gt;</font><br />         &lt;property name="aboutText" value="%aboutText"/&gt;<br /><font color="#008000">         &lt;!-- 这里设置帮助图标 --&gt;</font><br />         &lt;property name="aboutImage" value="icons/eclipse_lg.gif"/&gt;<br />      &lt;/product&gt;<br />   &lt;/extension&gt;<br />&lt;/plugin&gt;<br /><br />3、更改 MANIFEST.MF 文件如下：<br /><br />Manifest-Version: 1.0<br />Bundle-ManifestVersion: 2<br />Bundle-Name: %pluginName<br />Bundle-SymbolicName: <font color="#ee82ee">com.yourcompany.yourproduct</font>; singleton:=true<br />Bundle-Version: 1.0.0<br />Bundle-Vendor: %providerName<br />Bundle-Localization: plugin<br />Require-Bundle: org.eclipse.core.runtime<br /><br />4、更改 build.properties 文件<br /><br />source.. = src/<br />output.. = bin/<br />bin.includes = META-INF/,\<br />               .,\<br />               splash.bmp,\<br />               icons/,\<br />               plugin.properties,\<br />               plugin.xml<br /><br />5、更改 plugin.properties 文件如下，上面各文件中带%的参数在这里都可以找到对应项，例如，如果你想改程序的名称，只需更改 productName 项即可<br /><br />pluginName=yourproduct<br />providerName=yourcompany.com</p>
		<p>productName=yourproduct<br />aboutText=yourproduct\n\<br />\n\<br />Version: 1.0.0\n\<br />\n\<br />(c) Copyright yourcompany.com 2006.  All rights reserved.\n\<br />Visit <a href="http://www.yourcompany.com\n\">http://www.yourcompany.com\n\</a><br /><br />6、增加icons目录并在目录中添加eclipse_lg.gif、eclipse.gif、eclipse32.gif图片，可以自己制作或拷贝Eclipse目录\plugins\org.eclipse.platform_3.1.2\中的文件。</p>
		<p>7、现在就可以把这个Plugin打包拷贝到Eclipse的Plugin目录中了，注意：最好不要打成Jar包，这样方便以后更改 plugin.properties 文件。<br />8、更改Eclipse目录\configuration\中的 config.ini 文件如下：<br />找到如下项<br />eclipse.product=org.eclipse.platform.ide<br />更改为<br />eclipse.product=<font color="#ee82ee">com.yourcompany.yourproduct</font>.<font color="#ff0000">yours<br /></font><font color="#000000">注意此处颜色与上面的匹配对应着关系的匹配，上面相同颜色的地方改变了，那么这里对应颜色的地方也要相应改变！<br /><br />好了，现在启动一下你的Eclipse看看如何？是否Title和图标都改变了？<br />如果没有改变，请删除\configuration\目录中除config.ini和.settings外的所有内容后启动Eclipse即可。<br /><br />其实更改Eclipse启动画面的方法更简单，只要换掉\plugins\org.eclipse.platform_3.1.2\中的splash.bmp文件即可。</font></p>
<img src ="http://www.blogjava.net/hengheng123456789/aggbug/87969.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-12-15 16:02 <a href="http://www.blogjava.net/hengheng123456789/archive/2006/12/15/87969.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何更改Eclipse运行环境的Title标题</title><link>http://www.blogjava.net/hengheng123456789/archive/2006/12/13/87544.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Wed, 13 Dec 2006 10:05:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2006/12/13/87544.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/87544.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2006/12/13/87544.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/87544.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/87544.html</trackback:ping><description><![CDATA[   我们在进行Eclipse插件开发过程中，可能经常会需要修改Eclipse的标题，把Title改为自己公司的产品名称，我在网上查找了一些资料（“小小凉粉”在Eclipse社区提问的回复），加上自己的实践总结出以下几种方法：<br /><br /><br />1、可以通过获取主程序的Shell来更改程序标题。<br /><br />public static void changeAppTitle(String newTitle) { <br />   Display display = Display.getDefault(); <br />   if (display != null) { <br />      Shell shells[] = display.getShells(); <br />      for (int i = 0; i &lt;=shells.length();i++){<br />         Object data = shells <em>.getData(); <br />         // 检查shell是否为主程序的 shell: <br />         if (data instanceof IWorkbenchWindow) { <br />            // 更改主程序的标题文字<br />            shells .setText(newTitle); <br />            break; <br />         } <br />      } <br />   } <br />} <br /><br />2、通过重载</em>WorkbenchWindowAdvisor 来实现<br /><br />public class MyWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor implements IPropertyChangeListener { <br />   ... <br />   @Override <br />   public void preWindowOpen() { <br />      super.preWindowOpen(); <br />      _configurer = getWindowConfigurer(); <br /><br />      setTitle(); <br />      PreferencesImpl.store().addPropertyChangeListener(this); <br />   } <br /><br />   public void propertyChange(final PropertyChangeEvent event) { <br />      if (event.getProperty().equals(MY_PREFERENCE_KEY)) { <br />         if (!event.getOldValue().equals(event.getNewValue())) { <br />            setTitle(); <br />         } <br />      } <br />   } <br /><br />   protected void setTitle() { <br />      final String title = computeNewTitleHoweverYouLike(); <br />      _configurer.setTitle(title); <br />   } <br /><br />   protected IWorkbenchWindowConfigurer _configurer; <br />} <br /><br />3、通过修改Eclipse源代码来实现<br /><br />其实最简单的方法就是直接修改源代码，我把Eclipse3.1.2的org.eclipse.ui.ide_3.1.1.jar源码进行了修改，只需修改org.eclipse.ui.internal.ide包中IDEWorkbenchWindowAdvisor.java类，在computeTitle()方法内增加一句话就OK了！<br /><br />    private String computeTitle() {<br />      ..........<br />        // 在返回标题名称之前，进行title的自定义设置<br />        title = "随便你取什么名字：）";<br />        return title;        <br />    }<br /><br />大家如果需要动态改变标题，请看“小小凉粉”的《动态改变RCP应用程序的标题》一文，地址为： <br />http://www.blogjava.net/dearwolf/archive/2006/12/13/87554.html <br /><img src ="http://www.blogjava.net/hengheng123456789/aggbug/87544.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-12-13 18:05 <a href="http://www.blogjava.net/hengheng123456789/archive/2006/12/13/87544.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse 插件开发基础之功能部件使用（转）</title><link>http://www.blogjava.net/hengheng123456789/archive/2006/12/13/87390.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Wed, 13 Dec 2006 02:04:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2006/12/13/87390.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/87390.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2006/12/13/87390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/87390.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/87390.html</trackback:ping><description><![CDATA[Pat McCarthy是IBM资深软件工程师，他在一年前就写了这篇文章，如果您想开发插件共享给其他人，那么学习如何有效地使用功能部件是最基本的。本文就如何组织功能部件和优化使用插件开发环境来开发功能部件和插件提出了一些建议，同时介绍了定制 Eclipse 行为的高级技术。即便您只是想学习如何设置 Eclipse，以使您可以自定义任何工作空间的初始化属性值，或者是学习如何使用链接文件来管理您添加到 Eclipse 的组件，本文对您来说也将有所帮助。 <br /><br />构建一个插件是很有趣的：您开始编写代码并创建您想要的工具。把插件拷贝到 Eclipse 或一个基于 Eclipse 的产品中的 \plupgins 目录下，这个插件在 Eclipse 运行期环境中就可以使用了。当再一次使用 Eclipse 的时候，插件将被找到，而且经过平台的启动处理，它在运行期配置中将是可用的。 <br /><br />但是谁知道或者关心您的插件加入了进来？用户可以明白您提供的是什么工具吗？他们可以通过 Eclipse 来禁用、修补或者管理您的组件吗？答案显然是否定的。插件本身仅仅是一个插件，而不是与 Eclipse 平台完全集成的组件。 <br /><br />功能部件包装插件 <br />如果没有功能部件，插件是难以驾驭的，通俗地说，不属于功能部件的插件是未被管理的插件。Eclipse 平台的启动过程包括一个配置的步骤。如果一个新的插件被拷贝到 \plugins 目录，或者以其他方式使 Eclipse 在启动的时候可以找到，配置过程会发现它，但只是通过将新插件的 splash 图标闪烁两次来通知您。Eclipse 之所以会发现新的插件，是因为存贮在 \.metadate\.config\platform 中的当前工作区的配置校验和发生了变化；由于您没有向平台提供一个可以引导用户做出配置修改的功能部件，Eclipse 也只能是通过 splash-flash 来提示这一变化。将您的插件打包为一个（或两个）功能部件，您将获得如下好处： <br /><br />在 Eclipse 的配置过程中列出您的组件（在 feature.xml 文件中）所要求的先决条件 <br />使您的组件可以作为 Eclipse 配置的活动部分来管理 <br />创建标记信息，让使用那些使用运行期环境的用户可以识别您的组件，并通过一个欢迎页面来告知用户您的功能部件所提供的功能（在关联到您的功能部件的 welcome.xml 文件中） <br />用 Eclipse 更新管理器可以对您的组件进行修改 <br />不要等到您的插件开发完成后再打包为功能部件。反映在功能部件定义中的设计结果会影响您如何构建您的插件。例如，大多数的 Eclipse 组件都有 UI 功能部件和核心（不是 UI）功能部件。如果您的插件没有按这种方法进行划分，您可能会马上考虑重新设计它们。功能部件也可以用来自动编译处理被引用的插件。 <br /><br />主要功能部件标识一个产品（但是您有控制权） <br />虽然功能部件很多，但是当您启动 Eclipse 的时候，只有一个功能部件处于控制之下。这个主要功能部件决定了产品的标识和其他运行期行为，包括确定名字和与运行期平台相关联的图示，以及对所有插件默认属性值的重新定义选项。在后面的定义您自己的全局属性中可以看到，这个功能强大的选项使您可以定制您自己的 Eclipse 设置。 <br /><br />功能部件构建插件（如果您允许它们） <br />插件开发环境（PDE）可以自动完成为完整的运行期环境准备功能部件和插件的大部分工作。参见 Eclipse.org 中文章的讨论 "PDE 生成插件"（在后面的参考资料中有相关链接）。这些基本的步骤在The Java Developer&amp;acute;s Guide to Eclipse（同样参阅后面参考资料中的链接）中也曾作为一个练习涉及到，遵循那个练习您可以构建并标识您已有的插件。可以说如果您有一个功能部件，并且了解 PDE 如何帮助您构建插件和功能部件，您就可以构建一个功能部件，然后让它去同时构建所有相关的插件。构建控制策略（bin.excludes 与 bin.includes）将在后面的使用 PDE 构建功能部件的策略中讨论。这些策略是对 Eclipse.org 文章以及The Java Developer&amp;acute;s Guide to Eclipse一书的补充。 <br /><br />平台配置管理 <br />理解功能部件所需要条件有助于理解它们如何对活动配置中可用的内容进行管理。 <br /><br />启动过程 <br />如果是一个刚解压缩的 Eclipse 平台，那么当您启动 eclipse.exe 的时候将会发生： <br /><br />安装可能已经完成 <br />如果一个工作区已经存在，那么会有一个 .metadata\.config\platform.cfg 配置文件。 <br /><br />如果您是以常规方式安装 Eclipse，您得运行 eclipse -initialize 命令来生成一个默认的初始化配置文件，放置在 eclipse\.config 目录下。这样当 Eclipse 以新的工作区启动时不再出现 Completing the install 的图示。 <br /><br />找到 Java 运行期环境（JRE）。默认情况下，Eclipse 首先查找 exlipse\jre 子目录。如果没有找到，Eclipse 将查找在系统中注册的 Java 运行期环境。 <br />注意：-vm dir-location 参数可以用到指定其他的 JRE。 <br />配置被作为新的工作区的一部分创建出来。新的工作区通常没有任何的配置，所以您会在真正的 splash 图标之前看到一个图标，通知您安装设置完成。 <br />处理那些注册到 Eclipse 的功能部件和插件，并创建在后面将会用于检测变化的校验和。这些功能部件和插件或者位于当前的 eclipse\features 目录和 eclipse\plugins 目录下，或者位于由链接文件指定的 eclipse\... 目录结构中。 <br />一旦 Eclipse 启动，活动配置定义将包含在 .metadata\.config\platform.cfg 文件中。 <br /><br />链接文件如何扩展一个 Eclipse 安装设置 <br />如果您已经使用了一段时间的 Eclipse 或者在您的配置中添加了哪怕只是一个新的插件，您肯定知道 Eclipse 是到 eclipse\features 目录和 eclipse\plugins 目录下去查找功能部件和插件的。不过您是否知道，Eclipse 也会到文件系统的其他位置去查找功能部件和插件？如果在 eclipse\links 目录下存在格式正确的链接文件，那么这些文件会被处理，相关联的功能部件和插件（包括没有相关功能部件的插件）在运行期配置中都会是可用的。 <br /><br />一个链接文件只是一个命名为 id.link 的任意文件，在这里 id 通常是正在被引用的根功能部件的 id。您可以在链接文件目标中定义不只一个功能部件，并且名字命名为 foo.link 彩强梢越邮艿摹８鲆桓霭缦履谌莸牧唇游募?<br /><br />path=E:/Eclipse-2.1.1/installedFeatures/Examples <br /><br />Eclipse 将会到指定的目录下去查找 eclipse\features 目录和 eclipse\plugins 目录，看是否有合法的功能部件和（或）插件。也就是说，目标目录必须包含一个 \eclipse 目录。如果找到，附加的功能部件和插件在运行期配置是将是可用的，如果链接文件是在工作区创建之后添加的，附加的功能部件和插件会作为新的配置变更来处理。 <br /><br />使用链接文件来定制您自己的 Eclipse 安装设置的策略将在本文稍后的使用链接文件管理 Eclipse 安装设置中进行讨论。 <br /><br />配置更新?D?D添加一个功能部件 <br />如果一个新的功能部件及所用到的插件已经添加到已有的 \features 目录和 \plugins 目录下，或者通过一个链接文件注册到 Eclipse，校验和的变化将触发配置处理过程。这个处理在一个简单的 splash-flash 之后进行。新的功能部件作为一个配置变更来处理，并且显示出一个配置变更的对话框。 <br /><br />例如，如果您打开一个标准的 Eclipse 解压缩环境的工作区，而后找到了 Eclipse Examples，您把它解压缩到与 Eclipse 同样的目录树中或者添加了一个链接文件来指明这个例子解压缩到了何处，将会出现一个如图1所示的对话框。 <br />所以，如果您看到类似于这样的一个对话框，那是因为在您运行一个安装配置程序的时，您自己或者其他人修改了 Eclipse 的配置，而平台发现了新的或者更新过的可用功能部件。如果条目可以被选中，您可以将这个变化添加到您当前的配置中。如果条目被禁用，说明存在配置上的问题，这个功能部件不能被添加进来。按下 Error Details 按钮可以查看有关配置问题的信息。 <br /><br />配置管理注解： <br /><br />存在未决变更并不意味着您不得不马上接受它们，在相当一段时间内您完全可以不去理会它们，只需要取消对条目的选择，并点击 Finish即可。要在以后再添加它们，您可以选择　Help &gt; Software Updates &gt; Pending Changes...　来再次打开那个对话框。 <br />已经被接受的变更在以后还可以禁用。打开 Install/Update 透视图，在 Install Configuration 视图中选中功能部件，然后在 Preview 视图中选择 Disable 。禁用的功能部件还可以通过类似的步骤启用。在 Install Configuration 视图中点击 Show Disabled Features 图标可以显示被禁用的功能部件。 <br />功能部件在运行期标识组件 <br />Eclipse 允许标识活动产品，也可以选择标识运行期配置中的每一个功能部件。功能部件不是必须要标识出来，您可以不标识您所有的功能部件，但是您应该至少标识一个。 <br /><br />标识定义?D?D插件的工作 <br />添加标识的关键问题是要明白把标识的定义在哪里。您定义标识的是功能部件，但是标识的内容是来自于插件。或者插件与功能部件的 id 相同（默认的情形），或者插件在功能部件的定义中被明确标识（这是 Eclipse 2.1.1 的新增功能）。在 Eclipse 2.1 中，一个功能部件定义可以通过在 feature.xml 文件中指定属性 plugin=… 来定义其他插件。 <br /><br />插件包含了用于定义和提供标识内容的文件。 <br /><br />标识内容概要介绍 <br />about.ini 控制文件定义了产品级和功能部件级的标识。产品标识必须正确包含以下两方面内容： <br /><br />功能部件必须被定义为一个可能的主要功能部件，即在 feature.xml 定义文件中要包含 primary="true"。 <br />功能部件必须被标识为活动的主要功能部件，在产品中通常是在 \eclipse 目录下的 install.ini 文件中的条目来设置。主要功能部件也可以在运行期通过使用 -feature featureId 启动参数来定义。 <br />理解功能部件标识的最简单的办法是去查看在 about.ini 控制文件中定义了哪些元素，以及它们在一个被标识的产品或功能部件中如何起作用。 <br />以下几条仅用于产品标识： <br /><br />windowImage <br />appName <br />aboutImage <br />其余条目在产品及功能部件标识过程中使用。 <br /><br />以百分号(%)开头的值在 about.properties 文件中解析。当一个功能部件是主要功能部件时，用 abouText 关键字定义的文本会在 About product 对话框中显示。当用户点击 Feature Details 按钮时，随后弹出的 About Features 对话框中也会显示这些本文内容。 <br /><br />功能部件被加入到运行期配置时，会打开 welcomePage 条目指定的欢迎页面，其后还可以通过选择 Eclipse 菜单选项 Help &gt; Welcome... 打开的 Welcome 选择对话框打开这个欢迎页面。 <br /><br />构建一个可行的有标识的功能部件的最快速方法是克隆一个在 Eclipse 本身中可以找到的一个现有的功能部件。具有 org.eclipse.platform id 的功能部件和插件会提供功能部件标识和插件标识。在The Java Developer&amp;acute;s Guide to Eclipse一书第34章练习7中有一个步骤详尽的指导说明。 <br /><br />在 Eclipse.org 的更新管理器子工程的开发资源中，您可以找到另外一些关于标识的详细说明（参见参考资料中的链接）。 <br /><br />使用 PDE 构建功能部件的策略 <br />在The Java Developer&amp;acute;s Guide to Eclipse一书中关于功能部件开发的章节和 Eclipse.org 的文章 "PDE 生成插件"中都对构建功能部件的过程进行了介绍，但是也还有一些其他的途径。当您理解了如何使用 PDE 来构建功能部件和相关联的插件之后，您可以让这些步骤自动完成。 <br /><br />由 PDE 实现的 Ant 目标 <br />让我们从对 PDE 所提供功能概要介绍开始讲起。PDE 将为一个 plugin.xml 或 feature.xml 文件生成 build.xml 文件。Build.xml是一个 Ant 脚本，可以完成运行期平台的功能部件和插件所需要的不同任务。PDE 构建过程允许您生成下列构建目标中的一个或多个。 <br /><br />重要的功能部件构建目标： <br /><br />build.jars 为每一个引用到的插件调用 build.xml 文件中的 build.jars 任务。 <br />build.update.jar 为每一个引用到的插件调用 build.xml 文件中的 build.update.jars 任务。同时会为功能部件创建一个 Update JAR。这是 Ant 脚本的默认目标。 <br />build.sources 为每一个引用到的插件调用 build.xml 文件中的 build.source 任务。 <br />zip.distribution 创建一个包含功能部件和引用到的插件所需要的所有文件的压缩文件。 <br />refresh 使 Eclipse 刷新功能部件工程及任何引用到的插件的工程。 <br />重要的插件构建目标： <br /><br />build.jars 为插件定义的每一个运行期 JAR 调用 build.xml 文件中的许多目标。被调用的目标的名字与运行期 JAR 文件的名字相同。这些目标编译 Java 代码并创建 JAR 文件，包含任何在源文件目录下的资源。 <br />build.update.jar 将所有运行期插件目录下所有需要的文件压缩打包为一个名字为 plugin.id_version.jar 的文件，在这里 plugin.id 和 version 来自于 plugin.xml 文件。这是 Ant 脚本的默认目标。 <br />build.sources 基于给定的运行期 JAR 文件所定义的源文件目录，创建 Java 源文件的压缩包。 <br />zip.plugin 创建一个包含有插件所需要的所有内容的压缩包。 <br />refresh 使 Eclipse 刷新插件工程。 <br />注意：在功能部件和插件的Ant 处理过程中，更新 JAR 或生成压缩包的处理过程中打包的文件，是运行期环境所需要的那些文件。这些内容在功能部件或插件的 build.properties 文件和在 plugin.xml 中定义的每一个插件的运行期 JAR 文件中，通过 bin.includes 或者 bin.excludes 条目来描述。 <br /><br />为了构建一个插件，您可能会指定 clean，build.sources，build.jars，zip.plugin，refresh。为了构建一个功能部件，您可能会指定clean，build.sources，build.jars，zip.distribution，refresh。您或许会想要在开始时使用 clean 来强制重新生成所有结果，经常会有这种情况。尽管 Ant 处理过程将基于输入的变化重新执行所需要的步骤，但是有一些变化不会触发所有需要的处理过程。测试结果表明如果您改变了一个 Java 源文件，相应的源文件压缩包将会更新，但是类不会被重新编译，运行期 JAR 也不会被更新。所以安全起见，建议您先将输出结果清空，以保证您在重新构建后所使用的是对应于当前源文件的运行期版本。 <br /><br />讨论方案 <br />为了进行讨论，我们先描述一下只有一个功能部件和插件时在运行期配置中需要的内容。 <br /><br />组件结构示例 <br /><br />组件类型 <br />文件 <br /><br />功能部件 <br />feature.xml <br /><br />feature_image.jpg <br /><br />/license/license.html <br /><br />/license/license.pdf <br /><br />/plan/project-plan.doc <br /><br />插件 <br />plugin.xml <br /><br />/images/action.gif <br /><br />/images/editor.gif <br /><br />/src/co/pkg/id/action.java <br /><br />/src/co/pkg/id/editor.java <br /><br />/design-docs/plug-in.doc <br /><br />/design-docs/editor.doc <br /><br /><br />正如您所看到的文件名，虽然这些文件大部分属于运行期环境，还是有一些文件不是您想要与其他人共享的（例如，您的设计文档）。 <br /><br />包含策略?D?D指出所需要的部分 <br />至少到刚开始时，最简单的方法是，在构建过程中将您要打包的部分作为在运行期配置中功能部件或插件的一部分而列出来。相应的 build.properties 文件分别如下所示： <br /><br />build.properties 内容 <br /><br />组件 <br />build.properties 文件内容 <br /><br />功能部件 <br />bin.includes = feature.xml,\ <br />license/ <br /><br />插件 <br />source.runtime.jar = src/ <br />bin.includes = plugin.xml,\ <br />images/ <br /><br /><br />排斥策略?D?D指定不需要的或私有的部分 <br />另一种方法是把您不想打包的部分在构建过程中作为功能部件或插件的一部分列出来。这不仅要包括您不想共享的文件，还要包括构建过程中创建的文件和目录（有一些是临时的）。这种方法用到的 build.properties 文件如下： <br /><br />build.properties 内容 <br /><br />组件 <br />build.properties 文件内容 <br /><br />功能部件 <br />bin.excludes = temp.folder/,\ <br />com.ibm.master.lab.core_1.0.0.bin.dist.zip,\ <br />.classpath,\ <br />.project,\ <br />build.xml,\ <br />build.properties <br /><br />插件 <br />bin.excludes = temp.folder/,\ <br />bin/,\ <br />.classpath,\ <br />.project,\ <br />build.xml,\ <br />build.properties,\ <br />makesrczip.xml,\ <br />src/ <br /><br /><br />如果给定功能部件或插件的 id 值为 com.your.feature.id 或者 com.your.plugin.id，那么您在使用排斥策略的时候还需要在文件中包括以下条目： <br /><br />com.your.feature.id_1.0.0.bin.dist.zip,\ <br />com.your.feature.id_1.0.0.jar,\ <br />com.your.plugin.id_1.0.0.jar,\ <br /><br />zip 条目将使生成的组件压缩包不被 update JAR 或者组件压缩包自己所包含。JAR 条目将使生成的功能部件或插件的 update JAR 不被组件压缩包或者 update JAR 自己所包含。 <br /><br />当您的组件压缩包或者 update JAR 看起来比它应该的大小要大，或者在每次您进行编译时包的大小呈跳跃式增长，说明您应该执行以上步骤了。您需要在适当的功能部件或者插件的 build.properties 文件中加入以上条目来解决这个问题。 <br /><br />对文件或者结构变化的响应 <br />除了以上提到的之外，当一个新的文件或目录添加到功能部件或者插件时，还有必需的响应需要考虑。我们的意思是您得让您的功能部件和插件能应付可能的改变，也就是说它们分别需要一个 feature.properties 文件和一个 plugin.properties 文件。当您用包含策略时，您需要给 .properties 文件添加一个适当的属性，如果是使用排斥策略的话就不用这样做了。 <br /><br />不论哪种方法，如果您把一个文件添加到一个目录，那么不需要做任何其他的改动。对于新添加的文件，如果使用的是包含策略，它会被发送处理，如果使用的是排斥策略，它将不会被发送处理。这实际上是您可能应该要考虑使用不同的目录来存放不同的文件的原因。例如，您的插件所用到的所有图片所在的目录应该被包含在内，而一个开发过程中存放插件的设计讨论或文档的目录则不然。 <br /><br />最坏的情形是当您忘记对 build.properties 进行更新时：会发生运行期失败或生成内容存在差错的产品。如果您使用包含策略，新加入的文件或目录在打包后是不可用的，这有可能会导致您的插件不能用或者显示出 Eclipse 默认的图标（红盒子）。如果是使用排斥策略添加新文件或目录，这些文件或目录的内容在打包过程中会被包含进来。根据您的风格选择适当的方法，从而把您忘记执行更新时的风险降到最低。这将取决于您所面临的主要问题：是功能部件或插件不能运行，还是其他人本不应该看到运行期目录下的文件。 <br /><br />组织功能部件 <br />当您在开发您的工具时，您是否考虑到了需要多少个插件？答案是至少三个：一个是您的模型，也就是非 UI 的核心部分，一个是您的 UI 内容，还有一个或多个是用于提供帮助内容。如果您注意过，您会发现这是 Eclipse 本身的基本模式（jdt.core, jdt.ui, jdt.doc; debug.core, debug.ui;等等）。 <br /><br />这样划分的原因之一是，相对于不用于 UI 的插件来说，用于 UI 的插件在运行期需要不同的 Eclipse 组件的支持（org.eclipse.ui）。 <br /><br />包含其他功能部件 <br />功能部件如果没有被其他功能部件包含，那么在 Eclipse 配置中都会被配置为根功能部件。默认情况下，根功能部件可以由用户在 Install/Update 透视图中禁用或启用，并且可以在 feature.xml 文件中确定一个更新 URL。当包含一个功能部件时，只有在根功能部件中的更新 URL 会被处理，否则只能通过 search-location 定义特别许可才可以。 <br /><br />通过包含功能部件，您可以管理包的组织结构。您可能会有多个功能部件，但只有一个做过标识，其余的或者是用来构成结构，或者是用来管理组件。请记住是根功能部件来定义更新的站点，尽管这个角色可以由功能部件委派给它所包含的功能部件，通过设置 search-location 属性值为 selfboth。 <br /><br />如果您正在构建一个基于 Eclipse 的产品，您可能希望您的一个功能部件来包含 Eclipse 功能部件树。对于标识这个产品来说这并不需要，但是您可以指定另外的更新站点（Eclipse 自己用的是 <img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" /><a href="http://update.eclipse.org/updates），或者根本不指定更新站点，禁用基于" target="_blank">http://update.eclipse.org/updates），或者根本不指定更新站点，禁用基于</a>  Web 的更新。 <br /><br />可选功能部件的角色 <br />当将一个功能部件包含到另一个功能部件时，您可以选择是否把它设置为可选的。主要原因是创建这样的结构可以让用户根据他自己的需要来禁用您提供的组件的一部分。 <br /><br />当新的功能部件包含有可选功能部件，但那些可选功能部件并不存在时，Eclipse 的配置逻辑不允许添加这个新的功能部件。也就是说，如果适当的先决条件成立，可以使用可选功能部件来创建层结构。不过需要将这些层存贮在不同的目录树下，并且每层使用单独的链接文件。您可以添加到 Eclipse 配置以增加其功能的链接文件的没有数目上的限制。 <br /><br />让 Eclipse (或者任何基于 Eclipse 的产品)以您的方式工作 <br />现在向您讲明了两点：指定的主要功能部件控制整个产品的标识和默认属性，Eclipse 可以在安装配置目录下或者任何一个链接的 Eclipse 目录结构下找到组件。这意味着您可以改变 Eclipse (存在相关风险，不过仅仅意味着您修改时需要小心！)。这些改变可以帮助您管理基于 Eclipse 的安装配置，并使之支持您个人所喜好的属性规则。 <br /><br />使用链接文件来管理 Eclipse 安装配置 <br />您可能会希望能对环境进行更多的管理，而不是毫无选择地将所有的插件（我希望是引用到的功能部件）全部安装到您的 Eclipse 目录树下。如果您需要更新 Eclipse，实际上您并不想要另外再装一个新的 Eclipse 或者在列表中去查找您所想要的功能部件和插件。 <br /><br />下面是一种借助链接文件来组织您的 Eclipse 或者基于 Eclipse 的产品和构件的方法： <br /><br />保持 Eclipse 或者基于 Eclipse 的产品是干净的。也就是说，不要把您的任何功能部件或者插件添加到 eclipse\features 和 eclipse\plugins 目录下。 <br />在已有的 eclipse 目录下创建一个 eclipse\links 目录和一个 eclipse\links-out 目录。如果您用的是基于 Eclipse 的产品，那么可能已经存在 eclipse\links-out 目录。这个目录并不特殊，只是一个用来方便存放不用的链接文件的地方。 <br />为您要添加到您的配置中的功能部件和插件创建一个或多个 add-ons 的目录。在这些目录下，创建一个 eclipse\features 和一个 eclipse\plugins 目录结构。 <br />为每一个 add-ons 目录在 eclipse\links-out 目录下创建一个链接文件。将那些您当前要添加到您的活动配置中去的链接文件拷贝到 eclipse\links 目录。 <br />例如，假定您将 Eclipse 解压缩到一个名为 Eclipse-2.1.1 的目录下，然后创建一个名为 CoolTools 的 add-ons 目录，也放在 Eclipse-2.1.1 目录下。在 CoolTools 目录下，您可以有多个目录，每个目录用于一个或一族您要添加到 Eclipse 的工具。您的目录结构可能会如图3所示 <br />EditorList.link 文件要包含下面其中一条（不能是全部） <br /><br />path=D:/Eclipse-2.1.1/CoolTools/EditorList <br />path=D:\\Eclipse-2.1.1\\CoolTools\\EditorList <br /><br />斜杠是一条（/）还是两条（\\）取决于目录结构。 <br /><br />确认条目不要以空格结尾，因为这样 Eclipse 会忽略它?D?D我第一次用链接文件时用了好几个小时才弄明白这一点。 <br /><br />如果您使用一个新的工作区来启动 Eclipse，所有 Eclipse 自带的以及通过链接文件找到的功能部件和插件都是可用的。如果您要添加一个链接文件，并使用现有的工作区重新启动 Eclipse，Configuration Changes 对话框就会弹出。如果您删除了一个链接文件（很简单，只是把它移到 \links-out 目录下），配置的变化也会被 Eclipse 注意到，但您能看到的仅仅是 splash-flash。 <br /><br />实际上您不是必须将链接文件移入移出来控制配置，更好的办法是用 Install/Update 透视图来调整配置。当然，可以这样做的前提是您的插件都属于功能部件（看，这是另外一个需要功能部件的理由）。使用 Eclipse 进行配置的调整将以后面讨论。 <br /><br />使用 Install/Update 透视图来修改配置 <br />根功能部件，以及任何定义为可选择的功能部件，都可以在当前配置中禁用。被禁用后，功能部件仍然可以被平台认出；它们只是不再包含在当前的运行期配置中。 <br /><br />前面我们谈及了将 Eclipse Examples 添加到活动配置中。添加后，我们可以使用 Install/Update 透视图来禁用它。如果您正打开一个包含有 Eclipse Examples 的 Eclipse 配置的 Install/Update 透视图，您看到的将如图4 所示 <br />在 Preview 视图中点击 Disable Now 按钮，您就可以将 Eclipse Examples 功能部件从运行期配置中临时移除。点击后，Eclipse 将提示您重新启动平台来使配置的修改生效。 <br /><br />Eclipse Examples 功能部件在当前配置中将不再可见（或者说不是活动的）。为了能再次看到这个功能部件并启用之，您需要在 Install Configuration 视图中点击 Show Disabled Features 开关按钮（见图5）。 <br /><br />由于 Eclipse Examples 功能部件是一个根功能部件，所以可以这样做。如果您在 Eclipse SDK 中浏览其他功能部件，您将发现它们在 Preview 视图中没有相应的 Disable Now 按钮，这是因为它们被定义为必需的。 <br /><br />如果您用的是 Eclipse SDK，您应该会有默认配置的平台、JDT 和 PDE。如果您正在做一些插件的开发，但是您不需要 PDE??或者在一些情况下，您不是总需要 JDT??您只要对 Eclipse 做一个小的修改就可以禁用这些功能部件。打开 org.eclipse.platform.sdk.win32 功能部件的 feature.xml 文件，将以下几行修改为包含 optional="true" 属性。 <br /><br />清单 1. 禁用 PDE 和 JDT <br /><br /><br /><br />&lt;includes id="org.eclipse.platform.win32" version="2.1.1" match="equivalent"/&gt; <br /><br />&lt;includes id="org.eclipse.jdt" version="2.1.1" match="equivalent" optional="true"/&gt; <br /><br />&lt;includes id="org.eclipse.pde" version="2.1.0" match="equivalent" optional="true"/&gt; <br /><br />&lt;includes id="org.eclipse.platform.win32.source" version="2.1.1" match="equivalent" <br /><br />optional="true"/&gt; <br /><br />&lt;includes id="org.eclipse.jdt.source" version="2.1.1" match="equivalent" optional="true"/&gt; <br /><br /><br />现在您可以在 Install Configuration 视图中选择这些功能部件并禁用它们。如果所有前面提到那些定义为可选择的功能部件都被禁用，平台依然可以运行。并且，您随时可以重新启用它们。图6 是 Install Configuration 视图中显示的被禁用的功能部件。 <br /><br />图 6. 禁用 Eclipse 多个的功能部件 <br /><br />这些禁用/启用的设置都是仅对于当前工作区有效。您可以有另外的活动工作区，其中包含有部分或全部在当前工作区中被禁用的功能部件。 <br /><br />这个简单的例子说明了使用功能部件的优势（它们可以被禁用）和使用链接文件来将所有可能的功能部件添加到您的配置的意义所在。在一个给定的工作区中将您所不需要的功能部件禁用，这样就可以优化当前配置。 <br /><br />定义自己的全局属性 <br />Eclipse 是一个优秀的工具，但是同任何工具一样，您得对它进行定制，它才能是完美的。工具提供了属性页面来让您改变工具的行为或可视化显示。最新统计，在 Eclipse 中有 62 个属性页面。几乎每次您使用到一个新工具，您都会发现有些选项您想要修改。但是当您使用多个工作空间时，或者是在一个团队的环境中工作，有一些选项需要与他人协调，这样就出现了如何在跨工作空间以及与他人协调工作时对选项进行最佳管理的问题。 <br /><br />Eclipse 提供了导入/导出属性的功能。在任何一个属性对话框中，您都可以将属性导出到一个 .epf 文件中。当使用其他工作区或与他人共享时，可以再次导入这个文件。您甚至可以将它添加到工程中与团队成员共享，以便每个人都可以得到标准的属性。 <br /><br />但是这样做会变得单调而乏味，并且如果您忘记了就麻烦了。在使用 Eclipse 或任何基于 Eclipse 的产品时，您应该意识到还有另外一种方法可以定义全局属性。您可以通过修改主要功能部件的 plugin_customization.ini 文件来定制属性的默认值。 <br /><br />您可以在 eclipse 目录下的 install.ini 文件中找到主要功能部件。例如，在标准的 Eclipse 解压缩中的 install.ini 的内容如下： <br /><br />清单 2. 标准的 Eclipse 解压缩中的 install.ini 的内容 <br /><br /><br /><br /># install.ini <br /><br /># java.io.Properties file (ISO 8859-1 with "\" escapes) <br /><br /># This file does not need to be translated. <br /><br /><br /><br /># Required property "feature.default.id" contains the id of the primary feature <br /><br /># (the primary feature controls product branding, splash screens, and plug-in customization) <br /><br />feature.default.id=org.eclipse.platform <br /><br /><br /><br /># Required property "feature.default.application" contains id of the core <br /><br /># application that gets control on startup. For products with a UI, this <br /><br /># is always org.eclipse.ui.workbench; for "headless" products, this is product-specific. <br /><br />feature.default.application=org.eclipse.ui.workbench <br /><br /><br />feature.default.id=… 指定了默认的主要功能部件。要注意的是，通过在启动 Eclipse 时使用 -feature 选项，可以把其他功能部件声明为是主要的。 <br /><br />同大部分功能部件控制和标识一样，实际的工作都是在功能部件相关联的插件中完成的。对于 Eclipse来说，这是一个 id 与功能部件相同的插件，org.eclipse.platform 插件。如果您仔细查看这个作为主要功能部件标识的插件，您将发现一个名为 plugin_customization.ini 的文件。这个文件的内容与导出属性的文件类似。当 Eclipse 启动时会读取这个文件，并用来指定所有默认的属性值，而不是去使用插件本身定义的那些值。这就使得产品，或者说是您，可以改变插件的行为。默认的 plugin_customization.ini 文件的内容只有一条： <br /><br />清单 3. 默认的 plugin_customization.ini 文件　 <br /><br /><br /><br /># plugin_customization.ini <br /><br /># sets default values for plug-in-specific preferences <br /><br /># keys are qualified by plug-in id <br /><br /># e.g., com.example.acmeplugin/myproperty=myvalue <br /><br /># java.io.Properties file (ISO 8859-1 with "\" escapes) <br /><br /># "%key" are externalized strings defined in plugin_customization.properties <br /><br /># This file does not need to be translated. <br /><br /><br /><br /># Property "org.eclipse.ui/defaultPerspectiveId" controls the <br /><br /># perspective that the workbench opens initially <br /><br />org.eclipse.ui/defaultPerspectiveId=org.eclipse.ui.resourcePerspective <br /><br /><br />这一条目指定了打开新的工作区时以及当您关掉所有的透视图后关闭 Eclipse 时打开的透视图。如果您使用的基于 Eclipse 的产品，这个条目可能有所不同。 <br /><br />指定要包含的属性的过程比较费事，但至少您应该做如下步骤： <br /><br />1. 启动一个干净的工作区。 <br /><br />2. 修改您想要改变的一个属性。 <br /><br />3. 将属性导出到一个 .epf 文件。 <br /><br />4. 在导出的文件中找到新的健值，并确定它是否反映了您刚刚所做的改变。 <br /><br />5. 将一个或多个键的条目拷贝到标识插件（使用 Eclipse 时这个插件是 org.eclipse.platform）的 plugin_customization.ini 文件中。 <br /><br />6. 测试结果，或者保留新的键，或者再试一次。 <br /><br />注意：如果您不习惯于去更新产品的 plugin_customization.ini 文件，您可以在其他位置创建一个这个文件的拷贝，在启动 Eclipse 或基于 Eclipse 的产品时使用参数来指定它。 <br /><br /><br /><br />eclipse -plugincustomization myCustomDefaults.ini <br /><br /><br />全局属性示例 <br />前面提到了一些相关技术的描述，并提出了对您可能希望包含到您定制的 plugin_customization.ini 文件中的一些值的建议，这里给出了示例属性重写，作为对前面两方面的内容的说明。 <br /><br />我们将把它们根据我定制的目的在逻辑上分为的几部分来介绍。您可以下载完全的插件 customization.ini 文件。 <br /><br />视图栏默认是在底部，但我喜欢把它们放在顶部： <br /><br /><br /># View tabs at the bottom <br /><br />org.eclipse.ui.workbench/VIEW_TAB_POSITION=128 <br /><br /><br /><br /><br />新工作区打开时不打开欢迎页面，并且在关闭工作台时不再提示： <br /><br /><br /># No welcome dialog at open and no confirm on close <br /><br />org.eclipse.ui.workbench/WELCOME_DIALOG=false <br /><br />org.eclipse.ui.workbench/EXIT_PROMPT_ON_CLOSE_LAST_WINDOW=false <br /><br /><br /><br /><br />在打开新工程向导所知的透视图时，禁用提示或其他动作： <br /><br /><br /># Never change to perspective required by new project wizard (no prompt) <br /><br />org.eclipse.ui.workbench/SWITCH_PERSPECTIVE_ON_PROJECT_CREATION=never <br /><br /><br /><br /><br />定义另外的默认文本字体： <br /><br /><br /># Default text font (leaks into Java editor) <br /><br /># Note: you have to touch the font page and say OK/Apply (probable bug) <br /><br />org.eclipse.ui.workbench/org.eclipse.jface.textfont= <br /><br />1|Lucida Console|9|1|WINDOWS|1|-15|0|0|0|700|0|0|0|0|3|2|1|49|Lucida Console; <br /><br /><br /><br />注意：字体属性条目比较特殊，对它的修改不会立即生效。如果您访问字体属性页，前面所定义的内容会显示出来，不过得在您选择了 OK 或者 Apply 之后才会生效。我不能让这个键保存下来用于 Java 文本字体。 <br /><br />预定义附加的 Java 编辑器任务标签： <br /><br /><br /># Add to the default JDT task tags (TODO should probably be left) <br /><br />org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.taskTags=TODO,Edu-Sol <br /><br /><br /><br /><br />将对 Package Explorer 的双击默认设置为 Go Into 动作： <br /><br /><br /># Package Explorer GoInto on Double click <br /><br />org.eclipse.jdt.ui/packageview.doubleclick=packageview.gointo <br /><br /><br /><br /><br />有一些没有定义属性页面的选项也是可以定制的。在完成对 UI 的标准设置后导出的 .epf 文件中，我发现有一些 JDT 的选项值是作为属性来保存的。 <br /><br />这个属性键是用于告知 JDT UI 它要读取属性并用来改变默认的 UI 行为： <br /><br /><br /># Tells JDT it does have some prefs to use (forces a read of these values) <br /><br />org.eclipse.jdt.ui/CustomFiltersActionGroup.org.eclipse.jdt.ui.PackageExplorer. <br /><br />TAG_DUMMY_TO_TEST_EXISTENCE=storedViewPreferences <br /><br /><br /><br />注意：如果没有上面的这个属性键，接下来的两组设置将被忽略。 <br /><br />活动 Package Explorer 过滤器以属性值的形式保存： <br /><br /><br /># Package Explorer filter - standard JDT defaults + library filter <br /><br />org.eclipse.jdt.ui/org.eclipse.jdt.ui.PackageExplorer.LibraryFilter=true <br /><br />org.eclipse.jdt.ui/org.eclipse.jdt.ui.PackageExplorer_patternFilterId_.*=true <br /><br />org.eclipse.jdt.ui/org.eclipse.jdt.ui.PackageExplorer.PackageDeclarationFilter=true <br /><br />org.eclipse.jdt.ui/org.eclipse.jdt.ui.PackageExplorer_patternFilterId_**.class=true <br /><br />org.eclipse.jdt.ui/org.eclipse.jdt.internal.ui.PackageExplorer.EmptyInnerPackageFilter=true <br /><br /><br /><br /><br />Outline 视图有一个显示选项，可以在活动的 JDT Java 编辑器中显示内容时减小树的深度。这个图标有一个悬浮帮助 Go Into Top Level Type，由下面这个属性项来控制： <br /><br /><br /># Outline view GoInto Toggle when using JDT editor <br /><br />org.eclipse.jdt.ui/GoIntoTopLevelTypeAction.isChecked=true <br /><br /><br /><br /><br />您可能会想要尝试为更多的属性指定新的默认值，使用前面描述的方法然后核对一下结果即可。您或许会希望在一个临时的工作区中做这些事情，达到修改的目的后，您可以按此去修改活动的主要功能部件的 plugin_customization.ini 文件（不要告诉任何人是我教您这样做的！）。并且要注意的是，您可能会发现其他一些键被忽略了，这种情况我也曾遇到过，因为字体是用于 JDT 的，因此这一条目加入到 plugin_customization.ini 文件后，在属性页中根本就不会体现出这种变化。 <br /><br />结束语 <br />功能部件是 Eclipse 的幕后英雄－－它们很重要，因为它们是 Eclipse 配置管理的组成部分，支持产品标识，并且它们是在 Eclipse 平台上构建定制解决方案的产品的一部分。使用功能部件您可以： <br /><br />当您使用基于 Eclipse 的产品进行工作时，您可以根据功能部件标识鉴别出是谁提供了哪些不同的可用功能 <br />对产品的标识可以帮助进一步定制 Eclipse <br />在插件开发环境中自动完成任务 <br />通过禁用/启用根功能部件，或者使用 Install/Update 透视图来禁用/启用定义为可选的被包含的功能部件，您可以动态地改变给定工作区的配置 <br />所以，使用功能部件吧，它可以帮助您自动完成构建插件的一些步骤，使用文中提到的自定义 install/link 文件组织方法，可以使您的 Eclipse 环境更加好用。<br /><br />Pat McCarthy <br />IBM资深软件工程师 <img src ="http://www.blogjava.net/hengheng123456789/aggbug/87390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-12-13 10:04 <a href="http://www.blogjava.net/hengheng123456789/archive/2006/12/13/87390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在java开发中启动线程运行其他java程序</title><link>http://www.blogjava.net/hengheng123456789/archive/2006/11/29/84399.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Wed, 29 Nov 2006 09:59:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2006/11/29/84399.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/84399.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2006/11/29/84399.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/84399.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/84399.html</trackback:ping><description><![CDATA[   很多时候我们的程序都要在本程序外启动其他的应用程序，一般的做法都是新建立一个线程，在此线程上执行其他的程序，我在这里向大家介绍一个十分简单的方法。<br /><br />1、首先建立一个线程<br />     Thread t = new Thread("My Thread");<br />       t.start();<br /><br />2、然后建立一个Process   <br />   Process   runningProcess  = Runtime.getRuntime().exec("其他程序的启动命令，如：（java -classpath Hello.jar hello）");<br /><br />3、运行完毕后当然要销毁它<br />   runningProcess.destroy();<br /><br />当然还可以获得其他程序运行过程中的信息，获得方法如下：<br />   runningProcess.getErrorStream();<br />   runningProcess.getInputStream();<br /><br />这些信息可以方便地写入Eclipse的Console中。<br /><br /><img src ="http://www.blogjava.net/hengheng123456789/aggbug/84399.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-11-29 17:59 <a href="http://www.blogjava.net/hengheng123456789/archive/2006/11/29/84399.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse插件开发之建立Console视图并在其中显示自定义信息</title><link>http://www.blogjava.net/hengheng123456789/archive/2006/11/29/84343.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Wed, 29 Nov 2006 06:21:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2006/11/29/84343.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/84343.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2006/11/29/84343.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/84343.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/84343.html</trackback:ping><description><![CDATA[
		<p>   在Eclipse插件开发中经常会遇到需要在一个区域显示程序运行过程中的一些信息，如日志报告、错误提示等，Eclipse自身的MessageConsole其实就可以很方便地完成这些功能，并且开发起来十分方便。当然MessageConsole的开发也有许多种方法，在这里我只想向大家介绍一个最简单的方法，只需不到6行代码即可完成。<br /><br />1、必须先引入org.eclipse.ui.console的jar包（即在plugin.xml编辑界面的Dependencies标签页的“Required Plug-ins”选择Add按钮进行添加）<br />2、按照下面的方法调用Console<br /><br />  // 首先新建一个MessageConsole<br />  MessageConsole console = new MessageConsole("Console Name", null);</p>
		<p>  // 通过ConsolePlugin得到ConsoleManager，并把新建立的console 添加进去<br />  ConsolePlugin.getDefault().getConsoleManager().addConsoles(<br />    new IConsole[]{console});<br />  <br />  // 新建一个MessageConsoleStream，用于接收需要显示的信息<br />  MessageConsoleStream consoleStream = console.newMessageStream();<br /><br /><br />  // 打开Console视图<br />  ConsolePlugin.getDefault().getConsoleManager().showConsoleView(console);</p>
		<p>  // 使用MessageConsoleStream来打印你想要显示的信息到Console视图，这样一切就OK了，简单吧：）<br />  consoleStream.println(yourAPPMessage);</p>
<img src ="http://www.blogjava.net/hengheng123456789/aggbug/84343.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-11-29 14:21 <a href="http://www.blogjava.net/hengheng123456789/archive/2006/11/29/84343.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>成为Eclipse热键高手（转）</title><link>http://www.blogjava.net/hengheng123456789/archive/2006/11/28/83965.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Tue, 28 Nov 2006 01:47:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2006/11/28/83965.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/83965.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2006/11/28/83965.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/83965.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/83965.html</trackback:ping><description><![CDATA[作者:<br />Sam Brodkin ;tetsu<br />原文地址:<br />http://www.javaworld.com/javaworld/jw-08-2005/jw-0829-eclipse.html<br />中文地址:<br />http://www.matrix.org.cn/resource/article/43/43844_Eclipse_Hot_Key.html<br />关键词： Eclipse Hot Key<br /><br /><font color="#0000ff">概要<br /></font><br />Eclipse IDE 变得如此热门，以至于出现在许多工作简历中。但是，也正因为它的功能繁多，使得难于入手了。在这篇文章中，Sam Brodkin 分享了他最常用的一些Eclipse功能。他也提到了那些会让你的手指动的飞快的热键组合。在工作的时候，人们会怀疑你是在打电玩。<br /><br />Eclipse最妙的地方是它的功能是如此的丰富。如果你找不到某项功能，要么是你没有好好的去找，要么有一个插件可以实现它。Eclipse最糟的地方也是它的功能如此的丰富。拥挤的工具条，臃肿的菜单，以及配置对话框都让我想起了拉比林特斯迷宫（译者注：Minotau’s labyrinth，希腊神户中的人身牛头怪，住在Labyrinth迷宫中，吃人们供奉的童男童女，最后被Theseus杀死）（尽管配置对话框在Eclipse3.1中已经好了很多）。甚至是有经验的Eclipse程序员也是慢吞吞，笨手笨脚的。我观察过无数的同事，当试图在Eclipse的navigation面板里找一个类的时候，不假思索的按下“Ctrl ＋ Shift ＋ T”（打开型别（open type））。其实，只要有意识的投入一点点时间，你也会不在笨手笨脚的，而成为热键高手。<br /><br />精通Eclipse不单提高了你的效率，（我知道，按小时赚钱的签约人更喜欢文本编辑器），对你的求职简历也有好处。既然Eclipse已经越来越多的出现在Java工作说明上，那么在你的求职简历上也绝对是个好词。我把它放在我的个人简历上，就在POJO（简单初始Java对象）和POJI（简单初始Java接口）的中间。越来越多的公司转向Eclipse，因为它免费，而且为大多数程序员所接受。（除了那些少有的IntelliJ和Emacs的崇拜者）<br /><br />因此，你的简历上并不都是帮助你提高编程效率的大话，在本文中，我将给你几条Eclipse高效的建议。注意：如果你是个在寻找初学者教程的新手，那么请参看资源部分。<br /><br /><font color="#0000ff">Eclipse的快捷键组合功能</font><br /><br />使用Eclipse的快捷键组合功能，让你看起来像是在打电玩。特别是让人想起《真人快打》（Mortal Combat）的感觉。要成为《真人快打》的高手，你必须记住大量的按键顺序。比如，要使出Sub-Zero Skeleton Rip，你必须依次按下????和X键。这里的控制杆就是Ctrl，Alt，Shift，字母键，数字键和功能键的组合。<br /><br />让我们按照使用频率来看看我最爱用的一些热键组合。（注：以下内容在Eclipse3.02及一上版本通过测试）<br /><br />1. Control-Shift-T: 打开类型（Open type）。如果你不是有意磨洋工，还是忘记通过源码树（source tree）打开的方式吧。<br /><br />2. Control-Shift-R: 打开资源（不只是用来寻找Java文件）。小提示：利用Navigator视图的黄色双向箭头按钮让你的编辑窗口和导航器相关联。这会让你打开的文件对应显示在导航器的层级结构中，这样便于组织信息。如果这影响了速度，就关掉它。<br /><br />3. F3: 打开申明（Open declaration）。或者，利用Declaration Tab（在Java视图模式下，选择Windows --&gt; Show View -- &gt; Declaration）。当你选中代码中的一个方法，然后按这个按键，它会把整个方法在申明方框里显示出来。<br /><br />4. Alt-left arrow: 在导航历史记录（Navigation History）中后退。就像Web浏览器的后退按钮一样，在利用F3跳转之后，特别有用。（用来返回原先编译的地方）<br /><br />5. Alt-right arrow: 导航历史记录中向前。<br /><br />6. Control-Q: 回到最后依次编辑的地方。这个快捷键也是当你在代码中跳转后用的。特别是当你钻的过深，忘记你最初在做什么的时候。<br /><br />7. Control-Shift-G: 在workspace中搜索引用（reference）。这是重构的前提。对于方法，这个热键的作用和F3恰好相反。它使你在方法的栈中，向上找出一个方法的所有调用者。一个与此相关的功能是开启“标记”功能（occurrence marking） 。选择Windows-&gt;Preferences-&gt;Java-&gt; Editor-&gt; Mark Occurrences，勾选选项。这时，当你单击一个元素的时候，代码中所有该元素存在的地方都会被高亮显示。我个人只使用“标记本地变量”（Mark Local Variables）。注意：太多的高亮显示会拖慢Eclipse。<br /><br />8. Control-Shift-F: 根据代码风格设定重新格式化代码。我们的团队有统一的代码格式，我们把它放在我们的wiki上。要这么做，我们打开Eclipse，选择Window?Preferences?Java?Code Style，然后设置Code Formatter，Code Style和Organize Imports。利用导出（Export）功能来生成配置文件。我们把这些配置文件放在wiki上，然后团队里的每个人都导入到自己的Eclipse中。<br /><br />9. Control-O: 快速概要(quick outline)。通过这个快捷键，你可以迅速的跳到一个方法或者属性，只需要输入名字的头几个字母。 <br /><br />10. Control-/: 对一行注释或取消注释。对于多行也同样适用。<br /><br />11. Control-Alt-down arrow: 复制高亮显示的一行或多行。<br /><br />12. Alt-down arrow: 将一行或多行向下移动。Alt-up arrow会向上移动。<br /><br />其他的热键在菜单里有。你可以通过按下Control-Shift-L（从3.1版本开始），看到所有快捷键的列表。按下Control-Shift-L两次，会显示热键对话框（Keys Preferences dialog），你可以在这里自己设置热键。我欢迎你在Talkback部分发表你的Eclipse提示。<br /><br /><font color="#0000ff">其他的Eclipse窍门</font><br /><br />我总结了几个相关的小窍门：<br /><br />锁定命令行窗口：在命令行视图中（Window ? Show View ? Other ? Basic ? Console），试试看用滚动锁定按钮来锁定控制台输出不要滚屏。<br /><br />使用Ant视图：在我的Java或Debug模式下，我喜欢显示出Ant视图，这样我就可以迅速的运行Ant任务。通过Window ? Show View ? Other ? Ant可以找到该视图。把Ant视图放在屏幕的一角， 通过“添加编译文件（Add Buildfiles）”按钮来添加build.xml文件。在3.1版本中，甚至支持Ant调试脚本语言。<br /><br />自动遍历一个集合：for + Control-Space: 如果你还不知道，那么你应该记住Control-Space是自动完成功能。在Eclipse中，你还可以自动完成结构。在一个数组或集合范围内，试试看输入“for”然后按下Control-Space键。Eclipse会问你你想要遍历哪一个集合然后自动完成循环代码。<br /><br />使用分级布局：在包浏览视图（Package Explorer view）中默认的布局（扁平式）方式让我困惑，它把包的全名显示在导航树（navigation tree）中。我更喜欢我源码的包和文件系统视图，在Eclipse中叫做分级布局（Hierarchical Layout）。要切换到这种模式，点击包浏览视图中向下的按钮，选择布局（Layout），然后选择分级（Hierarchial）。<br /><br />一次显示多个文件：你可以一次浏览多个文件。把不在激活状态的编辑窗口拖到激活窗口的底部或侧边的滚动条上，就可以打开该编辑窗口。这是我能描述该窍门的最好方式了。<br /><br />同时打开两个Eclipse：要将改动从一个CVS分支上合并到另外一个上，我喜欢通过同时打开两个工作目录（Workspace）不同Eclipse来实现。这样我可以通过比较CVS上的最新版本看到所有的变化（右键单击工程，然后选择Compare with ? Lastest from HEAD）然后把每一个变化都合并到另外一个CVS分支上。启动多个Eclipse的最简单的方法是利用Eclipse Launcher。<br /><br />Implementors插件：安装一个能够跳到一个接口的实现的插件。如果你是个dependency injection 粉丝，或者正在基于编写优良的接口工作，那么你需要一个这样的插件来加速代码导航。 你可以在SourceForge找到这个插件。<br /><br />就像Modest Mouse乐队的歌曲“Out of Gas”唱的，“意见就像小猫，我已经送给别人”。这些是我的Eclipse小猫，希望你能给它找一个温暖的家。<br /><br /><font color="#0000ff">关于作者</font><br />Sam Brodkin是一个自由Java技术者，住在荷兰的Rotterdam。Brodkin’s的正式职业开始于8年前的Sun公司。他工作内容是Sun Java System Web Server。他目前正致力J2EE软件开发，特别是可维护性和漂亮的代码。Brodkin是一个IntelliJ的狂热者很多年了，但是却被迫转到Eclipse来开发现在的项目。虽然从没被抓到过，不过他还是被人怀疑在上班的时候玩电子游戏。<br /><img src ="http://www.blogjava.net/hengheng123456789/aggbug/83965.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-11-28 09:47 <a href="http://www.blogjava.net/hengheng123456789/archive/2006/11/28/83965.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse插件开发常见问题之编译运行正常但打包发布时无法显示</title><link>http://www.blogjava.net/hengheng123456789/archive/2006/11/19/82057.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Sun, 19 Nov 2006 09:34:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2006/11/19/82057.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/82057.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2006/11/19/82057.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/82057.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/82057.html</trackback:ping><description><![CDATA[
		<p>   今天在开发完插件后准备打包发布到单独的Eclipse运行环境时发现开发的程序界面无法显示？？郁闷了2个小时，才调试出来问题所在，现把自己开发打包的心得与大家分享一下先，希望与有经验的兄弟讨论。<br /><br />   先说一下今天问题的具体情况：<br /><br />程序简介：<br />1、开发了一个有Editor界面的插件程序（SWT风格的，关于SWT可以参看我blogjava的文章<a href="/hengheng123456789">http://www.blogjava.net/hengheng123456789</a>）<br />2、由于项目需要修改了Eclipse的部分源代码，并重新编辑加入项目中<br />3、使用了第三方的可视化开发SWT界面的插件程序<br /><br />问题：<br />1、在开发环境进行运行和调试均无问题<br />2、导出成Eclipse插件包也无错误提示<br />3、发布到单独的Eclipse运行环境进行运行时，无法显示所开发的Editor界面，只显示了一个Eclipse自身Editor的框架（郁闷！）<br /><br />解决方案：<br />   经过多方查找（差点重装系统），终于发现原来是修改的Eclipse源代码的祸（倒不是修改的错），是我在插件编辑环境时引用了修改的Eclipse源代码项目，但在打包发布时没有将修改的Eclipse源代码一同打进同一个包中，但在程序插件配置文件中已经包含了修改的Eclipse源代码路径，所以在单独运行时找不到这个路径，显示不出来所开发的Editor界面。<br /><br />   经过这一番折腾，颇有心得，现总结以前在打包发布插件的一起列举如下，希望对大家有所帮助！<br /><br /><font style="BACKGROUND-COLOR: #f5f5dc">1、打包发布前一定要把需要引用的非Eclipse包添加入（编辑Plugin.xml文件的编辑界面）Build标签页的Extra Classpath Entries项（选择Add JARs...按钮进行添加）<br />2、需要引用的非Eclipse包也要添加入（编辑Plugin.xml文件的编辑界面）Runtime标签页的Classpath项（选择Add...按钮进行添加）<br />3、非Eclipse包添加后记住，要察看项目的Java Build Path中的Libraries是否报错，可能是因为以上两个步骤把包加入到Plug-in Dependencies库中了，但在原来的Classpath中也包含这些包，出现了重复引用，直接删除原来的Classpath引用即可<br />4、保证在打包发布时，引用的包只有JRE System Library和Plug-in Dependencies，即除了JRE外，其他所引用的包全部应当在Plug-in Dependencies库中，这样导出的插件包程序才能够找到这些包！<br />5、发布到新的Eclipse环境下运行前要必须清空eclipse/configuration目录下除config.ini文件外的其他全部文件。（这是因为Eclipse的运行机制是：如果configuration目录中有编辑好的Eclipse插件，则直接运行configuration目录中的插件程序，否则把plugin目录中的文件编辑到configuration目录中，再运行！）<br /><br /><font style="BACKGROUND-COLOR: #ffffff">   目前我在开发中遇到的问题就是这些，希望大家予以补充和更正，谢谢！</font><br /></font></p>
<img src ="http://www.blogjava.net/hengheng123456789/aggbug/82057.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-11-19 17:34 <a href="http://www.blogjava.net/hengheng123456789/archive/2006/11/19/82057.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编写Eclipse插件Editor需注意的问题</title><link>http://www.blogjava.net/hengheng123456789/archive/2006/11/10/80397.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Fri, 10 Nov 2006 06:50:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2006/11/10/80397.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/80397.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2006/11/10/80397.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/80397.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/80397.html</trackback:ping><description><![CDATA[   今天在修改Editor的实现方式时出现了不能显示的问题，经多次跟踪调试发现问题如下，现记录在此，已备不时之需：<br />   在实现方法public void createPartControl(Composite parent)时需要以下几个设置，保证Editor的显示。<br /><br />1、parent.setLayout(new FillLayout());  //保证Editor中的内容全部显示在parent中<br />2、  <br />   Composite shell = new Composite(parent, SWT.EMBEDDED | SWT.MAX  | SWT.SCROLL_PAGE);<br />  shell.setLayout(new FillLayout()); //这里也必须设置Layout<br />3、<br />  Frame mainframe = SWT_AWT.new_Frame(shell);<br />  mainframe.setVisible(true); //如果要嵌入Swing/AWT的UI界面必须设置为可见<br />4、<br />  JPanel mainPanel = new JPanel();<br />  mainPanel.setBackground(Color.WHITE);<br />   mainframe.add(mainPanel);<br />  mainPanel.repaint();//其中加入的Panel必须repaint<br /><br /><br />OK，That's All<img src ="http://www.blogjava.net/hengheng123456789/aggbug/80397.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-11-10 14:50 <a href="http://www.blogjava.net/hengheng123456789/archive/2006/11/10/80397.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Subversion与Eclipse集成详解</title><link>http://www.blogjava.net/hengheng123456789/archive/2006/10/28/77811.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Sat, 28 Oct 2006 08:39:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2006/10/28/77811.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/77811.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2006/10/28/77811.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/77811.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/77811.html</trackback:ping><description><![CDATA[
		<p>今天终于配制成功了Subversion与Eclipse集成，现把详细步骤记录如下：<br /><br />1、Subversion的安装及配置（Windows版）<br /><br />   * 下载1.4版<br />   subversion.tigris.org下载subversion1.4(svn-1.4.0-setup.exe)<br />   tortoisesvn.tigris.org下载tortoise(TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi)<br /><br />   *分别进行安装，注意安装subversion1.4的目录名称中不能包含空格（如E:\Program Files不行）<br /><br />   *进入subversion安装的bin目录下创建一个windowservice.bat文件，用来把svn服务设置为windows服务，文件内容如下：<br /><br /><font style="BACKGROUND-COLOR: #7fffd4">sc create svn14 binPath= "E:\Subversion\bin\svnserve.exe --service --root E:\Subversion\root --listen-port 9000" DisplayName= "Subversion1.4" depend= Tcpip   <br /></font><br />   注意：E:\Subversion\root目录是我们自己手工新建立的目录，并且作为repository的根，用户可以根据自己的需要进行更改。<br /><br />   注意：每一个等号之后都有一个空格，否则无法运行成功。<br /><br />   *<font style="BACKGROUND-COLOR: #7fffd4">执行windowservice.bat文件，成功后在“服务”中可以看到名称为Subversion1.4的服务，把此服务启动起来，并设置为“自动”</font><br /><br />   *创建repository<br />   在命令行中输入命令：E:\Subversion\bin\svnadmin.exe create E:\Subversion\root\svnproject <br />   此时在目录E:\Subversion\root下创建了一个名为svnproject 的repository，可以看到创建目录的内容。<br /><br />   *创建用户<br />   打开E:\Subversion\root\svnproject\conf下的svnserve.conf，增加或修改为以下几句：<br /><br /><font style="BACKGROUND-COLOR: #7fffd4">anon-access = none</font><br />auth-access = write<br />password-db = passwd<br />authz-db = authz<br /><br />   修改authz文件为：<br /><br />[groups]<br />team=cao</p>
		<p>[/]<br />cao=rw<br /><br />   修改passwd文件为：<br /><br />[users]<br />cao=cao<br /><br />   这样就建立了一个用户名为cao密码为cao的用户<br /><br />2、Subversion的Eclipse插件的安装与配置<br /><br />   *下载Subversion的Eclipse插件<br />   下载地址：<a href="http://dl.easyjf.com/downloads/subversion_eclipse.zip"><font color="#000033" size="2">http://dl.easyjf.com/downloads/subversion_eclipse.zip</font></a><br /><br />   *直接解压到eclipse的目录中<br /><br />   *启动eclipse即可<br /><br />   *当把项目导入SVN中时可以直接右键选择项目，选择Test——Share Project，然后在弹出的对话框中选择SVN选Next，再选择“创建新的资源库位置”，选择Next，在URL中输入：svn://localhost:9000/svnproject，选择Finish即可。<br /><br />   *导出项目的方法与CVS类似<br />   <br /><br /><br /><br /></p>
<img src ="http://www.blogjava.net/hengheng123456789/aggbug/77811.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-10-28 16:39 <a href="http://www.blogjava.net/hengheng123456789/archive/2006/10/28/77811.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse插件开发之org.eclipse.ui.editorActions使用</title><link>http://www.blogjava.net/hengheng123456789/archive/2006/10/17/75690.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Tue, 17 Oct 2006 09:01:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2006/10/17/75690.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/75690.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2006/10/17/75690.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/75690.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/75690.html</trackback:ping><description><![CDATA[今天在开发Eclipse插件的Toolbar时，经多次尝试终获成功，现记录要点如下：<br />1、在编辑plugin.xml文件时，进入Extensions标签页，在All Extensions下选择Add...按钮，添加org.eclipse.ui.editorActions。<br />2、在org.eclipse.ui.editorActions上点鼠标右键选择New-〉editorContribution，填写id和targetID，注意targetID必须与org.eclipse.ui.editors中你要使用的id完全匹配相同，否则在你使用你的editor打开对应文件时，Toolbar上不会显示你所做的按钮或菜单！<br />3、在editorContribution上点鼠标右键选择New-〉action，填写id、label、class（此处为实现按钮操作的类，如删除操作）、toolbarPath（可以任意定义，如果想要在Toolbar中显示，就必须填写）、icon（必添，否则在Toolbar中无法显示）<br />4、编辑class（此处为实现按钮操作的类，如删除操作），使之实现org.eclipse.ui.IEditorActionDelegate接口，操作方法在run方法下实现即可。<br /><br /><br />如果要增加Menu，则在上面的步骤后继续添加一些：<br />5、在editorContribution上点鼠标右键选择New-〉menu，填写id（如：<font style="BACKGROUND-COLOR: #008000">sampleMenu</font>）、label（如：Sample &amp;Menu），path可以不填写。<br />6、在sampleMenu上点鼠标右键选择New-〉separator，填写name（如：<font style="BACKGROUND-COLOR: #ee82ee">sampleGroup</font>）。<br />7、选择第3步创建的action，填写menubarPath（如：<font style="BACKGROUND-COLOR: #008000">sampleMenu</font>/<font style="BACKGROUND-COLOR: #ee82ee">sampleGroup</font>）。<img src ="http://www.blogjava.net/hengheng123456789/aggbug/75690.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-10-17 17:01 <a href="http://www.blogjava.net/hengheng123456789/archive/2006/10/17/75690.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>调试运行Eclipse插件遇到的问题：The editor class could not be instantiated.</title><link>http://www.blogjava.net/hengheng123456789/archive/2006/10/13/75004.html</link><dc:creator>哼哼</dc:creator><author>哼哼</author><pubDate>Fri, 13 Oct 2006 07:06:00 GMT</pubDate><guid>http://www.blogjava.net/hengheng123456789/archive/2006/10/13/75004.html</guid><wfw:comment>http://www.blogjava.net/hengheng123456789/comments/75004.html</wfw:comment><comments>http://www.blogjava.net/hengheng123456789/archive/2006/10/13/75004.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hengheng123456789/comments/commentRss/75004.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hengheng123456789/services/trackbacks/75004.html</trackback:ping><description><![CDATA[在开发Eclipse插件，调试运行插件时大家可能会遇到这样的问题：<br />"Unable to create this part due to an internal error. Reason for the failure: The editor class could not be instantiated. This usually indicates that the editor's class name was mistyped in plugin.xml." <br /><br />我在开发是出现这种问题主要是因为重新建立了一个新的插件项目，项目名称与原来删除的项目名称相同导致。<br /><br />具体解决办法如下：<br /><br />1、找到运行插件项目的workspace（注意：不是你开发插件运行的Eclipse的workspace），一般目录名称为“runtime-EclipseApplication”。<br />2、找到后进入目录“.metadata\.plugins”察看是否有你要运行的插件的名称，如“XXX”，把这个目录删除即可，简单方法是把“.metadata\.plugins”中的全部目录删除。<br />3、再执行插件项目，OK了：）<img src ="http://www.blogjava.net/hengheng123456789/aggbug/75004.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hengheng123456789/" target="_blank">哼哼</a> 2006-10-13 15:06 <a href="http://www.blogjava.net/hengheng123456789/archive/2006/10/13/75004.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>