Eclipse Weed(原)
Eclipse Weed
在使用Eclipse的过程中一些小知识的收集,文中的所有描述均在Eclipse3.2环境下。(2006.11.13 最后更新 )
Eclipse曾经使用过的Workspace的列表
文件 eclipse\configuration\.settings\org.eclipse.ui.ide.prefs的 RECENT_WORKSPACES参数记录了该eclipse曾经使用过的工作区(它们的全路径)。MAX_RECENT_WORKSPACES参数设置了需要被记录的工作区的最多个数(默认值为5)。这些路径的列表会显示在主菜单File-->Switch Workspace...-->Workspace Lanucher中的Workspace下拉列表框内。
在启动时使用指定的工作区
eclipse.exe -data Workspace_Full_Path
注意:使用这种方法使用的工作区不会记录到 org.eclipse.ui.ide.prefs (见上一主题)中。
这可能是因为在启动时已经明确了工作区,也就不需要在 Workspace Lanucher 选择了,故Eclipse不将该信息记录到配置文件中。
Format多个文件
这一点其实很简单,右键点击需要被格式化的文件(或它所在的目录)-->Source-->Format,即可。
注意:
[1]由于该操作没有“后悔药”(即不能做undo),所以在做之前要谨慎。
[2]如果是右键点击某个目录,那么该操作只能影响该目录当前路径下的文件,它子目录中的文件不会被格式化。
配置外部工具(External Tools)
根据Eclipse的帮助可以知道配置外部工具的一般方法(请见Eclipse3.2帮助)。但对于配置某个特定的外部工具还需要区别对待。 JDK/bin中自带的javap.exe可以分解class文件,帮助我们理解程序的执行过程,是一个十分有用的工具。下面就以把javap.exe工具配置为外部工具作为例子进行讲述。
假设有目录结构:
Test
|--src
| |--test
| |--Test.java
|
|--bin
|--test
|--Test.class
Test是Eclipse的Java工程;src是源代码目录,其中有源代码test/Test.java文件;bin是输出目录,其中有test/Test.java被编译后生成的test/Test.calss文件。
|--src
| |--test
| |--Test.java
|
|--bin
|--test
|--Test.class
如果我们仅仅在cmd窗口(而非Eclsipe环境中)使用javap.exe,可以在任何目录下执行如下形式的命令行(前提是已经设置了JAVA_HOME环境变量): javap -classpath Workspace_Path\Test\bin -c test.Test
配置外部工具的步骤:
[1]通过主菜单Run-->External Tools-->External Tools...进入外部工具配置向导。
[2]选择Program项,并按左上角的新建(New Launch Configuration)按钮显示配置对话框。
[3]在Name文本框中输入这个External Tool的名称,本处写javap。
[4]在Location中填入javap.exe的路径。因为java.exe是工作区之外的程序,所以可以通过Browse File System...按钮进行选择。
[5]Working Directory文本框保持为空。
[6]Arguments中要填入执行javap命令时所需要的参数,这个参数就是前述命令行中的-classpath Workspace_Path\Test\bin -c test.Test。但我们要使该工具有通用的使用,就不可能将这个参数“写死”了。所以需要使用一些变量(Variable)来代替具体的路径。点击按钮Variables...可以看到所有的变量,我们需要使用workspace_loc,project_name和java_type_name。最终的完全参数如下所示:
-classpath ${workspace_loc}/${project_name}/bin -c ${java_type_name}
[7]点击Apply之后,就可以在工具栏的外部工具按钮(带一把红色小锁的Run图标)中发现一个名为javap的外部工具被添加进去了。
[8]选择某一个Java文件,然后点击工具栏上的外部工具按钮,即可对这个Java文件对应的class文件进行分解了。分解信息会显示在控制台中。
注意:细心的朋友肯定可以发现,上述方法有十分严重的局限性:class文件必须在bin目录下。其实对于设置外部工具的确切方法我没有完全弄清楚,主要是不懂各个Variable的确切含义,以及它们的组合规律。
又:
前面已经提到,前述的将javap.exe配置为外部工具的方法并不很好。关键在于Arguments设置的不好,以至于这种方法缺乏足够的弹性。现在我们做一些改进:
将 -classpath ${workspace_loc}/${project_name}/bin -c ${java_type_name} 修改为-classpath ${folder_prompt} -c ${java_type_name}。
在这种情况下使用外部工具javap,我们需要先 选中一个Java文件(不能是它的class文件),然后再 运行外部工具javap。运行javap时,会出现一个 路径选择对话框,请选择到 class文件(包括它的包路径)所在的根目录。则在此处,这个路径就是 Workspace_Path\Test\bin (而不是 Workspace_Path\Test\bin\Test ) 。
注意:这种方法的自由度已经大大提高,但似乎仍然不太理想。因为我们不仅要选择一个Java文件,还需要选择一个相当于classpath的路径。所以该问题仍然需要继续关注...
使用Templat
主菜单Preferences...-->Java-->Editor-->Templates,在Templates中可以看到一些已创建的模板,均都包含4部分:
Name:模板的名称
Context:模板使用的环境
Description:对该模板功能的简单描述
Auto Insert:(目前还不懂^_^)
在Preview文本域中可以看到该模板的通用内容。下面以 foreach模板为例进行讲述。
Name:foreach,即Enhanced for-Loop,是JDK5.0的新特性之一。
Context:java,即在进行Java编码时使用
Description:iterate over an array or Iterable,即遍历一个数组或一个实现了Iterable接口的对象。
Auto Insert:(无内容)
Preview的内容如下:
for
(${iterable_type} ${iterable_element} : ${iterable}) {
${cursor}
}
Preview中的内容,其实也就是该模板功能的实现方式。它指示了当使用这个模板时,应该如何生成代码。
我目前还不知道${}通用元素的使用方法,主要是不知道所有的可被使用的${}通用元素及其意义。不过根据这些通用元素的名字,我们仍然能够猜测到它的意义: ${iterable_type} ,迭代器中包含的元素的类型;
${iterable_element},声明的一个迭代器中元素的引用变量;
${iterable},迭代器对象本身的引用变量;
${cursor},光标的位置。
${cursor}
}
使用foreach模板:编辑Java源文件,先写入foreach,然后再接着使用组合快捷键Alt+/(使用Content Assist,即内容提示或所谓的智能感知),此时就会出现foreach模板的提示,单击该提示即可。
创建模板,关键也是要弄清楚通用元素的使用方法。但对于不太复杂的模板,也可以不使用/少使用通用元素。不使用通用元素,会使模板的通用性差些。
设置多个Source与Output目录
通过工程Properties-->Java Build Path-->Source,可以看到该工程的默认Output目录和所有Source目录。
可以通过“Add Folder...”或“Link Folder...”为工程增加Source目录。
打开已存在的Source目录的树,可以发现Output folder,一般它的值为Default output folder。选中并编辑它,就可以为这个Source目录选择Output目录了。
最直接的方法:编辑工程根目录下的.classpath文件,在该文件中加入如下形式的语句:
<classpathentry kind="src" path=" 源文件目录" output=" Output目录"/>
即,增加一个Source目录,并为它设置一个Output目录。
工程的默认Output目录的配置语句的形式如下:
<classpathentry kind="output" path=" Output目录 "/>
即,它不需要对应特定的源文件目录,工程的所有源文件目录都与它关联。
指定Eclipse启动画面(Splash)
eclipse.exe -vmargs -Dosgi.splashLocation= Your_Splash_Path
Your_Splash_Path 就是所指定的启动画面的路径,必须是一张 bmp格式的图片。
为什么Eclipse能够编译出不同版本的class文件?
右键点击Project-->Java Compiler-->JDK Compilance-->Compilance Level,在这个下拉列表框中可以选择不同的编译级别,目前包括1.3,1.4,5.0和6.0。
Eclipse并不使用当前系统中安装的JDK(JRE)中的编译器(javac)编译工程源代码,而是使用JDT中的编译工具来进行。这也就能够解释,为什么在系统中只安装了JDK1.4.2,但Eclipse仍然能够编译出5.0或6.0的class文件。
虽然Eclipse可以为每个工程选择不同的编译级别,且该编译行为与JDK中的javac无关,但在Eclipse中运行class所需要的JRE却必须是系统中已经安装了的。可以在主菜单Window-->Preferences-->Java-->Installed JREs中添加或选择不同的JRE。
updating...