﻿<?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>C++博客-我的编程乐园-随笔分类-Java</title><link>http://www.cppblog.com/deercoder/category/17609.html</link><description>&lt;P&gt;&lt;FONT style="FONT-SIZE: 20px" color=#ff0000&gt;积累，坚持！&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style="FONT-SIZE: 20px" color=#ff0000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ---------我是一只IT小小鸟&lt;/FONT&gt;&lt;/P&gt;</description><language>zh-cn</language><lastBuildDate>Sat, 09 Jun 2012 21:59:52 GMT</lastBuildDate><pubDate>Sat, 09 Jun 2012 21:59:52 GMT</pubDate><ttl>60</ttl><item><title>基于MetaWeblog的博客信息抓取——C++博客迁移</title><link>http://www.cppblog.com/deercoder/archive/2012/06/10/178232.html</link><dc:creator>deercoder</dc:creator><author>deercoder</author><pubDate>Sat, 09 Jun 2012 16:07:00 GMT</pubDate><guid>http://www.cppblog.com/deercoder/archive/2012/06/10/178232.html</guid><wfw:comment>http://www.cppblog.com/deercoder/comments/178232.html</wfw:comment><comments>http://www.cppblog.com/deercoder/archive/2012/06/10/178232.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/deercoder/comments/commentRss/178232.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/deercoder/services/trackbacks/178232.html</trackback:ping><description><![CDATA[最近准备把博客整体迁移到GitHub上面，但是由于本博客的内容较多，因此想找个办法进行迁移，无奈虽然C++博客提供了备份的功能，但是保存的XML文件不是标准的Wordpress的XML格式，因此还是得自己进行手动迁移，无奈过去记录的水文较多，弃之可惜，因此就想着如何进行博客迁移，如何抓取博客内容等一系列的问题。<br /><br />正好，在网上搜索的时候，发现CSDN等网站提供MetaWeblog的标准接口用于第三方程序的接入，书写博客，发布，删除等一系列操作，而C++正好提供了相关接口，只需要登录到你的账户，在选项--配置中，选择允许Web Service以及MetaWeblog，并访问下面提供的MetaWeblog接口即可。<br /><br />为此，好好研读了一下C++博客提供的接口，基本功能都已经提供了API接口说明，如writePost，getPost等等，对于其中用到的结构体，如Post等，也定义了相关的成员变量的组成，类型等等，因此，实际上是比较好做的。为此，我就开始动手，编写自己的博客迁移工具了。<br /><br />首先确定使用的平台和技术，经过研究，决定使用Apache XML-RPC库，并使用Java实现。<br />其次，编写对应的函数和功能，初期开发讲究前期验证，为此先凌乱的写了几个基本函数，写死一些变量和定义，以及所需要的Key，然后利用自己博客的一篇文章进行验证，证明能够获取到对应的信息，最后才保存到HTML文件中，打开后发现所需要的基本内容都完好保存，因此可以进行后续工作。<br />后续，主要进行扩展功能的展开，包括对其他接口的使用，如获取近期所有博客，获取分类信息，获取博客信息等等，另外，经过重构后，将相关的工具函数都转移到一个类中实现，并尽量做到代码复用，这个过程经历了几次，渐渐发现最初的代码惨不忍睹，而重构之后，将不变的如标记字段，服务商提供地址等等，都固定在某个类中，一旦需要应用到其他平台，如CSDN博客，只需要做最小的修改即可，方便代码复用。<br />最后，进行了简单测试，并发布到Github中进行版本管理和备份，填写相关log，后续可能会继续做二次开发。<br /><br />上面只是简单介绍使用的技术和开发流程，至于具体的细节实现，下面就几个重点来讲解：<br />1. 如何发起网络连接，并从服务器那边获取到所需要的博客信息？<br />利用Apache的XML-RPC库实现，非常简单，只需要进行简单配置即可，代码如下：<br /><div class="vimiumHUD" style="right: 150px; opacity: 0; display: none; "></div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->config&nbsp;=&nbsp;&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;XmlRpcClientConfigImpl();<br />client&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;XmlRpcClient();<br />config.setServerURL(<span style="color: #0000FF; ">new</span>&nbsp;URL(url));<br />client.setConfig(config);&nbsp;</div>这样，就完成了客户端的初始化和配置工作，此后，就可以直接利用此客户端来发现连接请求，获取对应的信息了。<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->List&nbsp;params&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ArrayList();<br />params.add("test");<br />params.add(USER_NAME);<br />params.add(USER_PASSWORD);<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;必須使用Object數組，List或者其他數組不行</span><span style="color: #008000; "><br /></span>Object[]&nbsp;arr&nbsp;=&nbsp;(Object[])client.execute(GET_BLOGS_METHOD,&nbsp;params);</div>发起一次请求时，只需要先配置好参数，根据每一个API文档定义的函数参数，放入到一个数组中，然后执行对应的函数，函数名使用<span style="font-size: 13px; background-color: #eeeeee; ">GET_BLOGS_METHOD之类的保存下来，即可获得对应的结果。</span><br /><br />2. 如何处理获得的结果？<br />由于类型都是由API文档中定义的，比如一篇博文的信息定义为一个Post对象，而这个对象是它定义的类，包含有标题，时间等成员，成员的类型还可能不同，比如大部分是String类型，但是也有如Date时间这样的类型。如何获取呢？<br />对于一个Post对象，获得其实就是一个个键值对，比如Key为&#8220;title&#8221;，value为对应的值&#8220;我的博客文章&#8221;等等，因此，可以使用Java中的Map来保存一个个键值对，但是这里我们会遇到一个疑问，Post对象既然是按照一个个键值对来保存，如<br />{<br />&nbsp;"title", "我的博客标题"<br />&nbsp;"description", "我的博客正文"<br />&nbsp;"date", "博客发布时间"<br />}<br />那么，可否就直接用Map&lt;String, String&gt;来保存每一个键值，然后根据键来分别读取信息呢？答案是否定的，因此并非所有的类型都是统一的，Key当然都是String类型，因为文档中已经定义好了，但是Value却可能不同，如Date对应的值是一个Date类型，而title对应的值是String类型，而他们都是隶属于Post对象的，如何来处理呢？<br />这里，我使用的是Map&lt;String, Object&gt;来存放每一个键值对，然后根据类型获取信息，代码如下：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp; &nbsp; &nbsp; String&nbsp;title&nbsp;=&nbsp;getPostTitle(result);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(title&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(title);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;saveString&nbsp;+=&nbsp;title&nbsp;+&nbsp;"&lt;br/&gt;";&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;文章标题，并以HTML形式存放</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date&nbsp;date&nbsp;=&nbsp;getPostDate(result);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(date&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;dateString&nbsp;=&nbsp;getPostTime(date);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(dateString);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;saveString&nbsp;+=&nbsp;dateString&nbsp;+&nbsp;"&lt;br/&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;article&nbsp;=&nbsp;getPostArticle(result);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(article&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(article);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;saveString&nbsp;+=&nbsp;article&nbsp;+&nbsp;"&lt;br/&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div>当然，这里用到了子函数实现，但实际的效果就是，根据API文档中的类型，在获得value的时候，将Object类型强制转换成需要的类型，比如，key为title的时候，知道值应该是String，因此就将值转换成String类型。Key位datedTime的时候，值的类型应该是Date类型，就将它转换成Date类型。这样，最终就可以完全读取出所有信息了。<br />而对于返回值为结构体数组的，同样用Object数组存放，然后读取每一个数组成员，强制转化成Map&lt;String, Object&gt;类型，保存一个结构体的所有键值对，然后根据结构体定义来逐个读取对应的值，当然，如果结构体全部都是String类型，就可以直接使用Map&lt;String, String&gt;来保存并读取了。<br /><br />基本上来说，上面应该是这些程序中的主要难点了，解决之后，大部分问题也都可以完成，至于写博客啥的，原理都是相同的，既然所有的信息都能够读取，就只需要赋值相关的语句，执行一个对应的函数而已了。<br />当然，在写代码的过程中，发现重构非常重要，虽然代码量不大，但是从历史上来看，变化还是非常大，后期的代码以及比前面的耦合度要低很多，而且对于固定不变的内容等都放在类成员中，便于继承以及代码复用，有兴趣的朋友可以试试CSDN等博客的相关功能。<br /><br />附上最终实现的输出结构：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->4765<br />http:<span style="color: #008000; ">//</span><span style="color: #008000; ">www.cppblog.com/deercoder/</span><span style="color: #008000; "><br /></span>我的编程乐园<br />Category&nbsp;Description:&nbsp;ACM<br />Category&nbsp;HTML&nbsp;Url:&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">www.cppblog.com/deercoder/Category/17069.aspx</span><span style="color: #008000; "><br /></span>Category&nbsp;RSS&nbsp;Url:&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">www.cppblog.com/deercoder/rss.aspx?catid=17069</span><span style="color: #008000; "><br /></span>Category&nbsp;Title:&nbsp;ACM<br />Category&nbsp;ID:&nbsp;17069<br /><br />Category&nbsp;Description:&nbsp;Android<br />Category&nbsp;HTML&nbsp;Url:&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">www.cppblog.com/deercoder/Category/17867.aspx</span><span style="color: #008000; "><br /></span>Category&nbsp;RSS&nbsp;Url:&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">www.cppblog.com/deercoder/rss.aspx?catid=17867</span><span style="color: #008000; "><br /></span>Category&nbsp;Title:&nbsp;Android<br />Category&nbsp;ID:&nbsp;17867<br /><br />Category&nbsp;Description:&nbsp;C++<br />Category&nbsp;HTML&nbsp;Url:&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">www.cppblog.com/deercoder/Category/13117.aspx</span><span style="color: #008000; "><br /></span>Category&nbsp;RSS&nbsp;Url:&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">www.cppblog.com/deercoder/rss.aspx?catid=13117</span><span style="color: #008000; "><br /></span>Category&nbsp;Title:&nbsp;C++<br />Category&nbsp;ID:&nbsp;13117<br /><br />Category&nbsp;Description:&nbsp;CTeX和LateX<br />Category&nbsp;HTML&nbsp;Url:&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">www.cppblog.com/deercoder/Category/13991.aspx</span><span style="color: #008000; "><br /></span>Category&nbsp;RSS&nbsp;Url:&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">www.cppblog.com/deercoder/rss.aspx?catid=13991</span><span style="color: #008000; "><br /></span>Category&nbsp;Title:&nbsp;CTeX和LateX<br />Category&nbsp;ID:&nbsp;13991<br /><br />Category&nbsp;Description:&nbsp;Git<br />Category&nbsp;HTML&nbsp;Url:&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">www.cppblog.com/deercoder/Category/18145.aspx</span><span style="color: #008000; "><br /></span>Category&nbsp;RSS&nbsp;Url:&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">www.cppblog.com/deercoder/rss.aspx?catid=18145</span><span style="color: #008000; "><br /></span>Category&nbsp;Title:&nbsp;Git<br />Category&nbsp;ID:&nbsp;18145</div><br />博客文章等保存为HTML文件，贴出HTML源码太大，就不帖了。<br /><br />以上，就是基于MetaWeblog的博客信息读取和迁移工作的前期工作，也是最基本的工作，后期，主要将这些函数整合并利用，就可以实现所有信息的本地备份，批量写博，批量删除，批量导入等工作了。<br /><br />最后，说说目前本工程的实现功能情况：<br /><pre style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; font-size: 17px; font-family: 'Bitstream Vera Sans Mono', Courier, monospace; white-space: pre-wrap; color: #333333; background-color: #ffffff; "><span style="font-size: 10pt; ">1. 根据一篇文章的博客ID，抓取对应的内容，标题和发布时间等信息（其余信息可自行添加，采用类似 的办法，因本人只对这写信息感兴趣） </span><br /><span style="font-size: 10pt; ">2. 获取所有的分类信息和Rss订阅信息</span><br /><span style="font-size: 10pt; ">3. 获取博客信息 </span><br /><span style="font-size: 10pt; ">4. 获取指定数量的近期发布文章 </span><br /><span style="font-size: 10pt; ">5. 保存为HTML页面<br />基本上，抓取博客所提供的API函数功能都已经实现，接下来要做的是，利用这些函数，实现循环的遍历所有的博客ID，然后全部读取出来，并保存，这些工作应该就是一些功能的组合和接口设计了。<br /><br />该工程已经发布到Github中，地址为：</span><a href="https://github.com/deercoder/blogMover">https://github.com/deercoder/blogMover</a>,欢迎大家拍砖，指导。</pre><br /><br /><div class="vimiumHUD" style="right: 150px; opacity: 0; display: none; "></div><div class="vimiumHUD" style="right: 150px; opacity: 0; display: none; "></div><div class="vimiumHUD" style="right: 150px; opacity: 0; display: none; "></div><img src ="http://www.cppblog.com/deercoder/aggbug/178232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/deercoder/" target="_blank">deercoder</a> 2012-06-10 00:07 <a href="http://www.cppblog.com/deercoder/archive/2012/06/10/178232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 密西西比河谷州立大学：Android应用程序开发（1~3）</title><link>http://www.cppblog.com/deercoder/archive/2012/06/09/178182.html</link><dc:creator>deercoder</dc:creator><author>deercoder</author><pubDate>Sat, 09 Jun 2012 08:56:00 GMT</pubDate><guid>http://www.cppblog.com/deercoder/archive/2012/06/09/178182.html</guid><wfw:comment>http://www.cppblog.com/deercoder/comments/178182.html</wfw:comment><comments>http://www.cppblog.com/deercoder/archive/2012/06/09/178182.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/deercoder/comments/commentRss/178182.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/deercoder/services/trackbacks/178182.html</trackback:ping><description><![CDATA[此课程系列较短，都是对Android很基础内容的讲解，而且年代有点久远，貌似视频中使用的平台仍然是Android2.1，因此，如果有更高需求的话，可以参阅SDK文档，其中有更为详述的表示。<br /><br />不过，由于时间较短，每节课才23分钟左右，所以即使作为练习听力也不错，而且还可以回顾一些Andriod基本知识，作为查缺补漏的工具，可以试听。下面是上课笔记。<br /><br />第一节：<br />介绍Android基本的生态环境，发展历史，以及基本组件，Activity，broadcast receiver，Service，Content Provider，特别对于Activity的生命周期有所详解，另外对整体框架，framework，Davik，Linux内核以及Android作为一个整体的工作流程有所描述。<br /><br />由于课程内容较短，因此上面很多内容都是泛泛而谈，不过Andorid的基本知识也都蕴含在此，关于Andorid框架，从底层的Linux内核，到稍微上一层的HAL（硬件抽象层），以及Framework层，最后是最上层的App层。整个框架大致如此，当然，很多App不一定需要了解这些知识，不过对于与硬件有关的程序，比如Camera，FM收音机，音乐播放器等，由于涉及到音频，Sensor，因此为了调试程序的方便，以及开发新的特性，发挥全部的硬件性能，可能就需要了解整个处理流程，以便加入新的功能，比如相机的曝光，手动调焦等，收音机的音频处理等等，因此需要了解的东西就很多，甚至对于Linux驱动，已经相机驱动等都要了解，否则相机的Porting工作基本是无法完成的。<br /><br />第二节：<br />讲述如何搭建开发环境，编写Hello World程序。Android程序的开发坏境，包括模拟器，JDK，Eclipse环境的搭配，另外，课程还对基本的一个App进行剖析，包括源码工程的目录结构，src文件夹，gen文件夹，res文件夹，良好的编程习惯（资源文件的隔离），以及源码的含义（Activity的启动，显示，setContenView的工作等等）。<br />此课程的最终目的是搭建简单的开发环境，并了解基本的开发流程。<br /><br />第三节：<br />用户界面基础。讲述了基本的View，ViewGroup和控件（Button，TextView等等），以Java中的SWT为例，以JButton等控件作为类比，通过编写一个小按钮，添加监听器，响应用户的按钮操作，并用Toast控件显示出来，以及关于Menu的一些基本知识。<br />另外，还有Layout的布局，从一个基本的布局讲起，讲述LinearLayout，RelativeLayout等基本布局，各自的区别，如何使用布局等等，控件的ID，代表的含义，如何获取Handler并设置控件的显示内容等等。<br /><br />总之，作为入门课程，内容非常广泛，可以对Android有一个详细的了解，不过要想深入使用，可以以该课程为主，以SDK文档为主，详细钻研课程中提高的控件，类，GUI视图，工作流程等，在SDK的每个文档中有对详细的展开和描述，并有实例学习，这样效果应该更佳。<br />先记到这里，后续课程笔记再做更新，主要内容偏向于总结，以及不懂的地方。 <div class="vimiumHUD" style="right: 150px; opacity: 0; display: none; "></div> <div class="vimiumHUD" style="right: 150px; opacity: 0; display: none; "></div><img src ="http://www.cppblog.com/deercoder/aggbug/178182.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/deercoder/" target="_blank">deercoder</a> 2012-06-09 16:56 <a href="http://www.cppblog.com/deercoder/archive/2012/06/09/178182.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntu 11.04下安装Eclipse</title><link>http://www.cppblog.com/deercoder/archive/2011/12/27/162944.html</link><dc:creator>deercoder</dc:creator><author>deercoder</author><pubDate>Tue, 27 Dec 2011 14:27:00 GMT</pubDate><guid>http://www.cppblog.com/deercoder/archive/2011/12/27/162944.html</guid><wfw:comment>http://www.cppblog.com/deercoder/comments/162944.html</wfw:comment><comments>http://www.cppblog.com/deercoder/archive/2011/12/27/162944.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/deercoder/comments/commentRss/162944.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/deercoder/services/trackbacks/162944.html</trackback:ping><description><![CDATA[<div><div style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">1. 安装JDK</div><div style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">　　ubuntu 11.04系统自带的Java环境是openjdk，最好使用sunjdk（具体原因不明，网上教程基本都是这样的），因此先去官方网站（&nbsp;<a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" style="box-sizing: border-box; color: #3468a4; ">http://www.oracle.com/technetwork/java/javase/downloads/index.html</a>）下载&#8220; Java SE 6 Update 26 &#8221;的JDK安装包：</div><div style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">Linux x86 - Self Extracting Installer （81.20 MB） jdk-6u26-linux-i586.bin</div><p style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">1.1. 下载好后开始安装JDK，在终端里输入：</p><div style="box-sizing: border-box; background-color: #ffffff; font-size: 12px; margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: #4b4b4b; line-height: 20px; "><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; font-family: 'Courier New'; "><div style="box-sizing: border-box; "><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">cd Downloads</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; "><br style="box-sizing: border-box; " />sudo cp jdk</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">6u26</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">linux</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">i586.bin </span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">opt<br style="box-sizing: border-box; " />cd </span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">opt<br style="box-sizing: border-box; " />sudo chmod </span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">+x</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; "> jdk</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">6u26</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">linux</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">i586.bin</span></div></pre></div><p style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">1.2. 解压缩安装包进行安装。</p><div style="box-sizing: border-box; background-color: #ffffff; font-size: 12px; margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: #4b4b4b; line-height: 20px; "><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; font-family: 'Courier New'; "><div style="box-sizing: border-box; "><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">sudo ./jdk</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">6u26</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">linux</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">i586.bin</span></div></pre></div><p style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">1.3. 接下来要配置环境变量，修改profile文件。</p><div style="box-sizing: border-box; background-color: #ffffff; font-size: 12px; margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: #4b4b4b; line-height: 20px; "><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; font-family: 'Courier New'; "><div style="box-sizing: border-box; "><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">sudo gedit </span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">etc</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">profile</span></div></pre></div><p style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">在文本中添加以下代码：</p><div style="box-sizing: border-box; background-color: #ffffff; font-size: 12px; margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: #4b4b4b; line-height: 20px; "><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; font-family: 'Courier New'; "><div style="box-sizing: border-box; "><span style="box-sizing: border-box; line-height: 1.5; color: #000000; "># Sun JDK profile</span></div><div style="box-sizing: border-box; "><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">export JAVA_HOME</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">=/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">opt</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">jdk1</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">.</span><span style="box-sizing: border-box; line-height: 1.5; color: #800000; ">6</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">.</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">0_26<br style="box-sizing: border-box; " />export JRE_HOME</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">=/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">opt</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">jdk1</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">.</span><span style="box-sizing: border-box; line-height: 1.5; color: #800000; ">6</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">.</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">0_26</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">jre<br style="box-sizing: border-box; " />export CLASSPATH</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">=.:</span><span style="box-sizing: border-box; line-height: 1.5; color: #800080; ">$CLASSPATH</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">:</span><span style="box-sizing: border-box; line-height: 1.5; color: #800080; ">$JAVA_HOME</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">lib</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">:</span><span style="box-sizing: border-box; line-height: 1.5; color: #800080; ">$JAVA_HOME</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">jre</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">lib<br style="box-sizing: border-box; " />export PATH</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">=</span><span style="box-sizing: border-box; line-height: 1.5; color: #800080; ">$JAVA_HOME</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">bin</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">:</span><span style="box-sizing: border-box; line-height: 1.5; color: #800080; ">$JAVA_HOME</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">jre</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">bin</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">:</span><span style="box-sizing: border-box; line-height: 1.5; color: #800080; ">$PATH</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">:</span><span style="box-sizing: border-box; line-height: 1.5; color: #800080; ">$HOME</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">bin</span></div></pre></div><p style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">1.4. 还要修改另外一个文件environment：</p><div style="box-sizing: border-box; background-color: #ffffff; font-size: 12px; margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: #4b4b4b; line-height: 20px; "><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; font-family: 'Courier New'; "><div style="box-sizing: border-box; "><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">sudo gedit </span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">etc</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">environment</span></div></pre></div><p style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">在文本中添加以下代码：</p><div style="box-sizing: border-box; background-color: #ffffff; font-size: 12px; margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: #4b4b4b; line-height: 20px; "><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; font-family: 'Courier New'; "><div style="box-sizing: border-box; "><span style="box-sizing: border-box; line-height: 1.5; color: #000000; "># Sun JDK environment</span></div><div style="box-sizing: border-box; "><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">export JAVA_HOME</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">=/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">opt</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">jdk1</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">.</span><span style="box-sizing: border-box; line-height: 1.5; color: #800000; ">6</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">.</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">0_26<br style="box-sizing: border-box; " />export JRE_Home</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">=/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">opt</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">jdk1</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">.</span><span style="box-sizing: border-box; line-height: 1.5; color: #800000; ">6</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">.</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">0_26</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">jre<br style="box-sizing: border-box; " />export CLASSPATH</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">=.:</span><span style="box-sizing: border-box; line-height: 1.5; color: #800080; ">$CLASSPATH</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">:</span><span style="box-sizing: border-box; line-height: 1.5; color: #800080; ">$JAVA_HOME</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">lib</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">:</span><span style="box-sizing: border-box; line-height: 1.5; color: #800080; ">$JAVA_HOME</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">jre</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">lib</span></div></pre></div><p style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">1.5. 手动配置JDK。</p><div style="box-sizing: border-box; background-color: #ffffff; font-size: 12px; margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: #4b4b4b; line-height: 20px; "><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; font-family: 'Courier New'; "><div style="box-sizing: border-box; "><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">sudo update</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">alternatives </span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">--</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">install </span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">usr</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">bin</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">java java </span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">opt</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">jdk1</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">.</span><span style="box-sizing: border-box; line-height: 1.5; color: #800000; ">6</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">.</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">0_26</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">bin</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">java </span><span style="box-sizing: border-box; line-height: 1.5; color: #800000; ">300</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; "><br style="box-sizing: border-box; " />sudo update</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">alternatives </span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">--</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">install </span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">usr</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">bin</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">javac javac </span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">opt</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">jdk1</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">.</span><span style="box-sizing: border-box; line-height: 1.5; color: #800000; ">6</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">.</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">0_26</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">bin</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">javac </span><span style="box-sizing: border-box; line-height: 1.5; color: #800000; ">300</span></div></pre></div><p style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">1.6. 让系统使用我们安装的JDK。</p><div style="box-sizing: border-box; background-color: #ffffff; font-size: 12px; margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: #4b4b4b; line-height: 20px; "><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; font-family: 'Courier New'; "><div style="box-sizing: border-box; "><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">sudo update</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">alternatives </span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">--</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">config java</span></div></pre></div><p style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">1.7. 验证安装JDK是否成功。</p><div style="box-sizing: border-box; background-color: #ffffff; font-size: 12px; margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: #4b4b4b; line-height: 20px; "><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; font-family: 'Courier New'; "><div style="box-sizing: border-box; "><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">java &#8211;version</span></div></pre></div><p style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">将会看到下面的信息。</p><div style="box-sizing: border-box; background-color: #ffffff; font-size: 12px; margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: #4b4b4b; line-height: 20px; "><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; font-family: 'Courier New'; "><div style="box-sizing: border-box; "><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">java version </span><span style="box-sizing: border-box; line-height: 1.5; color: #800000; ">"</span><span style="box-sizing: border-box; line-height: 1.5; color: #800000; ">1.6.0_26</span><span style="box-sizing: border-box; line-height: 1.5; color: #800000; ">"</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; "><br style="box-sizing: border-box; " />Java(TM) SE Runtime Environment (build </span><span style="box-sizing: border-box; line-height: 1.5; color: #800080; ">1.6</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">.0_26</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">b03)<br style="box-sizing: border-box; " />Java HotSpot(TM) Server VM (build </span><span style="box-sizing: border-box; line-height: 1.5; color: #800080; ">20.1</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">b02, mixed mode)</span></div></pre></div><p style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">2. 安装Eclipse。</p><p style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">2.1. 首先解压缩下载好的压缩包，在终端中输入：</p><div style="box-sizing: border-box; background-color: #ffffff; font-size: 12px; margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: #4b4b4b; line-height: 20px; "><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; font-family: 'Courier New'; "><div style="box-sizing: border-box; "><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">tar </span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">zxvf eclipse</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">SDK</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #800080; ">3.6</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">.</span><span style="box-sizing: border-box; line-height: 1.5; color: #800080; ">2</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">linux</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">-</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">gtk.tar.gz<br style="box-sizing: border-box; " />sudo mv eclipse </span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">opt</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; "><br style="box-sizing: border-box; " />sudo gedit </span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">usr</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">share</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">applications</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">Eclipse.desktop</span></div></pre></div><p style="box-sizing: border-box; color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">在文本中填入：</p><div style="box-sizing: border-box; background-color: #ffffff; font-size: 12px; margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: #4b4b4b; line-height: 20px; "><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; box-sizing: border-box; font-family: 'Courier New'; "><div style="box-sizing: border-box; "><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">[Desktop Entry]<br style="box-sizing: border-box; " />Name</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">=</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">Eclipse<br style="box-sizing: border-box; " />Comment</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">=</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">Eclipse IDE<br style="box-sizing: border-box; " />Exec</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">=/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">opt</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">eclipse</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">eclipse<br style="box-sizing: border-box; " />Icon</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">=/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">opt</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">eclipse</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">/</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">icon.xpm<br style="box-sizing: border-box; " />Terminal</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">=</span><span style="box-sizing: border-box; line-height: 1.5; color: #0000ff; ">false</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; "><br style="box-sizing: border-box; " />Type</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">=</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">Application<br style="box-sizing: border-box; " />Categories</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">=</span><span style="box-sizing: border-box; line-height: 1.5; color: #000000; ">Application;Development;</span></div></pre></div><span style="color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">2.2 eclipse安装结束。<br /><br />注：<br />1) Eclipse官方网上的众多版本让人头晕，google后发现，classic是基本的版本，提供了最基本的功能。而</span><span class="Apple-style-span" style="font-family: simsun; line-height: 23px; ">eclipse ide for java developer 是在classic的基础上增加了一些java开发的插件。</span><span class="Apple-style-span" style="background-color: #ffffff; ">Eclipse IDE for Java EE Developers 是在classic的基础上增加了一些j2ee开发的插件，下载的时候可以根据需要选择对应的版本。<br /></span><span class="Apple-style-span" style="font-family: simsun; line-height: 23px; ">2) 配置环境变量中的JAVA_HOME，JRE_HOME等等实际上和Windows下面的环境变量中的作用一致，可以类推。主要是要指定程序运行的目录bin和对应的库文件lib，可以发现有规律可循。<br />3) 配置Android环境需要安装ADT插件等，可以参照前一篇文档(</span><a href="http://www.cppblog.com/deercoder/archive/2011/09/11/155572.html">http://www.cppblog.com/deercoder/archive/2011/09/11/155572.html</a><span class="Apple-style-span" style="font-family: simsun; line-height: 23px; ">)。</span><br /><span style="color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; "><br />参考资料：<br />1) 安装指南：</span><a href="http://www.cnblogs.com/williamwue/archive/2011/06/23/2088315.html">http://www.cnblogs.com/williamwue/archive/2011/06/23/2088315.html</a><span style="color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; "><br /></span><span style="color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; ">2) Eclipse版本说明：</span><a href="http://topic.csdn.net/u/20080609/19/4016b980-51a6-40ee-9129-06c30ceda251.html">http://topic.csdn.net/u/20080609/19/4016b980-51a6-40ee-9129-06c30ceda251.html</a><span style="color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; "><br /></span><span style="color: #4b4b4b; font-family: verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20px; background-color: #ffffff; "><br /><br /></span></div> <div class="vimiumHUD" style="right: 150px; opacity: 0; display: none; "></div><img src ="http://www.cppblog.com/deercoder/aggbug/162944.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/deercoder/" target="_blank">deercoder</a> 2011-12-27 22:27 <a href="http://www.cppblog.com/deercoder/archive/2011/12/27/162944.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java递归实现遍历文件目录（所有文件夹和子文件）</title><link>http://www.cppblog.com/deercoder/archive/2011/08/21/153995.html</link><dc:creator>deercoder</dc:creator><author>deercoder</author><pubDate>Sat, 20 Aug 2011 17:44:00 GMT</pubDate><guid>http://www.cppblog.com/deercoder/archive/2011/08/21/153995.html</guid><wfw:comment>http://www.cppblog.com/deercoder/comments/153995.html</wfw:comment><comments>http://www.cppblog.com/deercoder/archive/2011/08/21/153995.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/deercoder/comments/commentRss/153995.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/deercoder/services/trackbacks/153995.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.io.File;<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;ListAllPath&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;print(File&nbsp;mFile,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;mlevel){<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;mlevel;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">){<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\t</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(mFile.isDirectory()){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;getPath(mFile)&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;str&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;mFile.list();<br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;str.length;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">){<br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;File(mFile.getPath()&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\\</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;str[i])&nbsp;,&nbsp;mlevel&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">{<br /></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(getPath(mFile));<br /></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;&nbsp;String&nbsp;&nbsp;getPath(File&nbsp;mFile){<br /></span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;fullPath&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;mFile.getPath();<br /></span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;str&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;fullPath.split(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\\\\</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;str[str.length&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br /></span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #000000; ">}<br /><br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.io.File;<br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;Demo&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;main(String[]&nbsp;args){<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ListAllPath&nbsp;demoTest&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ListAllPath();<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;rootFile&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;File(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">E:\\job</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;demoTest.print(rootFile,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; "></span></div><br /></span></div><img src ="http://www.cppblog.com/deercoder/aggbug/153995.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/deercoder/" target="_blank">deercoder</a> 2011-08-21 01:44 <a href="http://www.cppblog.com/deercoder/archive/2011/08/21/153995.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>