Java开发Kit及相关设置(win32 Java1.4+eclipse4.4.2/InteliJ IDEA)

一、win32 Java1.4+eclipse4.4.2环境相关

  官网地址:https://www.eclipse.org/

  eclipse 下载,版本V4.4.2版本V4.8.0包含32位和64位。

  参考 Java1.4 eclipse 第一个java程序 Hello World说明

  使用问题:eclipse没有联想功能的解决办法

    如何导入/到处Java项目,参考https://jingyan.baidu.com/article/2d5afd69d868a285a2e28ed5.html

  以下内容参考:1. https://blog.csdn.net/lazycheerup/article/details/83964260

          2. https://www.cnblogs.com/-blog/p/5500771.html

二、关于eclipse及相关的文件说明

  1.  classpath的作用

  classpath是系统的环境变量,就是说JVM加载类的时候要按这个路径下去找,当然这个路径下可以有jar包,那么就是jar包里所有的class。 eclipse build path是eclipse工程里需要的包,也是需要的class,本质上没什么区别。 你可以测试,比如JDK中有个String类,在java.lang中,那么你自己声明一个别的包,类叫String,然后打个jar包,将这个jar包所在的路径复制到classpath中,在系统的那个String前,这时候你在用String类将是用你自己的,因为类加载器加载扫描路径是按顺序的,找到之前的jar里有String,就用了。后面的不在查看。 但是同一类名,还看你导入的包,其实你都可以自己创建一个java.lang包,然后创建一个String类,那就完全冒充JDK。

.classpath文件

<classpathentry kind="src" path="src"/> 
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.j2eedt.core.MYECLIPSE_JAVAEE_5_CONTAINER"/> 
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/bsf-2.3.0.jar"/> 
<classpathentry kind="output" path="WebRoot/WEB-INF/classes"/>

1. <classpath kind="src" path="src"> 对应的是source folder类型的目录,
kind---表示这个classpath的类型,path表示在项目中的路径,
path使用根目录的相对路径(相对.classpath文件本身的相对路径) ,
myeclipse项目中的src本身就是一个source folder,所以它会自动写入这个文件中,
如果自己手动建立了一个source folder,这个folder也会写入这个文件,
形式就是以上形式eg.在项目基础上新建一个test的source folder,
就会就会成为这样:
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="test"/></pre><br> 

2. <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
这句是表示程序的运行环境 kind="con"---表示classpath的类型,
con即是container,就是程序运行的容器,或者就说是运行环境也OK,
它实际上是在Myeclipse最初的时候要配置installed JREs中指定(一般情况下我们指定的是JDK),
但是这里实际使用的是JDK下的JRE中的jar包,就是JDK_HOME/jre/lib就是对应的这条语句

3. <classpathentry kind="con" path="melibrary.com.genuitec.eclipse.j2eedt.core.MYECLIPSE_JAVAEE_5_CONTAINER"/> 
这句是kind="con"当然和上条一样,是表示运行时的容器,
一般情况下是java web项目才会有,它是包含了J2EE服务器要使用到的一些jar包,
这个目录中的jar包是其中最特殊的,那就是它不会在部署项目的时候部署到服务器上去,
因为myeclipse认为这样的jar包是服务器应该有的,所以这里有时候会出现问题,
就是开发的时候不出现问题,但是部署之后会出错,就是有的服务器有的jar包并没有提供,
比如tomcat(因为tomcat并不是专业的web服务器,它只是一个轻量的web容器),这就要区分好开发环境和运行环境 

4. <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/bsf-2.3.0.jar"/> 
这条语句kind="lib",对应的是classpath中的库文件,path指定库文件的路径,
同样是相对与项目根目录的相对路径

5. <classpathentry kind="output" path="WebRoot/WEB-INF/classes"/> 
这条表示项目的输出目录,整个之前定义的classpath无论是kind='src",kind="con",kind="lib",
在编译后都会进入到这个目录中来,在java web中也就是WebRoot/WEB-INF/classes。
同样使用的path是相对项目根目录的相对路径(相对.classpath文件本身的相对路径),
但是由于J2EE部分的是本身要求web 服务器本身要有那些jar包,所以那个例外不会进行拷贝

classpath是myeclipse重要文件,在进行相关的查找时候要用到
项目根目录下的".classpath“文件就是保存项目classpath的文件
文件中的 <classpath>... ...</classpath>之间保存各种classpath信息,
kind表示类型,path表示路径,且使用的都是相对于”.classpath“或者说是项目根目录的相对路径

几种kind的含义
kind=”src" ----对应source folder目录
kind="con"--项目的容器,一般当是java web项目的时候会有两个
kind="lib"---项目中使用到的库文件
kind='output"--输出目录,最终编译后相关文件的目标目录,myeclipse会自动完成相关的拷贝 
最终对于myeclipse的classpath的管理都是通过这个文件实现
 1 myeclipse项目中的.classpath文件:
 2 <?xml version=”1.0” encoding=”UTF-8”?>
 3 <classpath>
 4 <!-- 源码目录 -->
 5 <classpathentry kind=”src” path=”src”/>
 6 <!-- JDK运行时容器 -->
 7 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 8 <classpathentry kind="con" path="melibrary.com.genuitec.eclipse.j2eedt.core.MYECLIPSE_JAVAEE_5_CONTAINER"/>
 9 <!-- 以下为类库path为你自定义的目录,jar文件的路径 -->
10 <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/sino-base-1.3.2.jar"/>
11 <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/sino-bms-1.4.3.jar"/>
12 <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/sino-frame-1.2.2.jar"/>
13 <!-- 编译后输出class目录 -->
14 <classpathentry kind="output" path="WebRoot/WEB-INF/classes"/>
15 </classpath>

      说明:每个新建java工程(.Project)都默认存在的。 

  1).指定源文件位置, 对应工程属性Java build path中Source项中的一项, kind="src" 指明为源文件, 源文件路径path, output为这条路径中 源文件编译以后class文件的输出路径。     

  2).指定编译以后class文件的默认输出路径, 对应工程属性Java build path中 Source项中的default output path, kind="output"指明为默认 class输出路径, path为相应输出路径。  

  3).指定工程所用到的库文件或目录, 对应工程属性Java build path中 Libraries项中的一项, kind="lib"指明为库文件或目录, path为库 文件或目录位置。

  2 .project 的作用

 1 .project文件:
 2 
 3 <?xml version=”1.0” encoding=”UTF-8”?>
 4 <projectDescription>
 5 <!-- 工程名称 这里定义的name的值如果已经工作空间的其他项目占用了,
 6 当使用myeclipse的import功能导入项目时,就会导不进来-->
 7 <name>sxVIP</name>
 8 <comment></comment>
 9 <projects></projects>
10 <!-- 编译器指定-->
11 <buildSpec>
12     <buildCommand>
13         <name>org.eclipse.wst.common.project.facet.core.builder</name>
14         <arguments>
15         </arguments>
16     </buildCommand>
17 </buildSpec>
18 <!-- 核心特性 -->
19 <natures>
20     <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
21     <nature>com.genuitec.eclipse.ast.deploy.core.deploymentnature</nature>
22     <nature>com.genuitec.eclipse.j2eedt.core.webnature</nature>
23 </natures>
24 </projectDescription>

  3. eclipse中的 .project 和 .classpath文件的具体作用
  .project是项目文件,项目的结构都在其中定义,比如lib的位置,src的位置,classes的位置。如果你的项目中没有.project文件,那么eclipse就不能把它当作一个项目。.classpath的位置定义了你这个项目在编译时所使用的$CLASSPATH。这些文件你用文本编辑器就能察看了。在一个项目中点刷新的目的是为了更新.project文件中的文件清单,让你把不通过eclipse提交到项目的文件显示出来。

 1 .classpath 文件
 2        <?xml version="1.0" encoding="UTF-8"?>
 3 <classpath>
 4         <classpathentry kind="src" path="src"/>
 5         <classpathentry kind="src" path="test"/>
 6         <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 7         <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
 8         <classpathentry kind="lib" path="lib/dom4j-1.6.1.jar">
 9                 <attributes>
10                         <attribute name="javadoc_location" value="file:/home/wpc/Work/Apache/dom4j-1.6.1/docs/api$
11                 </attributes>
12         </classpathentry>
13         <classpathentry kind="output" path="bin"/>
14 </classpath>
15 
16   从数据上我们容易看出,上面描述了工程的依赖文件:
17 源文件的具体位置(kind="src") 运行的系统环境(kind="con") 工程的library的具体位置信息(kind="lib") 在每个lib的xml子节点中,有关于它的其它配置信息(例如我配置的那个"javadoc_location") 项目的输出目录(kind="output")
18 
19 总体上说这个文件就是配置整个工程的运行环境。
20 
21 .project 文件
22      <?xml version="1.0" encoding="UTF-8"?>
23 <projectDescription>
24     <name>CreateInterpret</name>
25     <comment>JavaCC Nature@key 32303037303632392D3130303020437265617465496E746572707265742F777063 </comment>
26     <projects>
27     </projects>
28     <buildSpec>
29         <buildCommand>
30             <name>sf.eclipse.javacc.javaccbuilder</name>
31             <arguments>
32             </arguments>
33         </buildCommand>
34         <buildCommand>
35             <name>org.eclipse.jdt.core.javabuilder</name>
36             <arguments>
37             </arguments>
38         </buildCommand>
39     </buildSpec>
40     <natures>
41         <nature>org.eclipse.jdt.core.javanature</nature>
42         <nature>sf.eclipse.javacc.javaccnature</nature>
43     </natures>
44 </projectDescription>
45     从数据上看,我们可以了解到这些配置主要是描述工程的基本信息:
46 工程名<name></name> 工程注释描述<comment></comment> 运行时需要的额外Eclipse插件<natures></natures>,及其具体加载方式信息<buildSpec></buildSpec>
47 如果你在开发过程中向工程里面加入了很多额外的插件,则必然会导致你的Eclipse启动速度变慢。在这种情况下,你可以到这个文件里面去掉一些插件,不过这样一来你在开启那些关联文件的时候会加载那些插件。
48 .settings 文件
49     里面存放各种插件的配置文件。
50   以上是简单介绍了Eclipse的Project相关的隐藏配置文件.
51 PS:我们发现几个问题,工程名是由.project中的<name>标签定义的,而不是文件目录名;
52 类路径是通过classpathentry属性定义的;
53 将某个工程作为类路径是这么定义的:
54 <classpathentry combineaccessrules="false" kind="src" path="/Sepsif"/>
55   其中/Sepsif是与Sepsif Samples同处一个根目录的另一个工程;
56 <classpathentry kind="output" path="bin"/>定义的是将class文件输出的目录 

  4.  .jardesc和.properties文件说明

  .jardesc是一个导出jar文件的配置文件,具体可参考:Eclipse将java项目导出jar包详解(本项目没有用到外部JAR包,所有的包都是JDK自带)。第一次导出时候可以选择记录配置到一个这样的文件中;下次导出的时候,点这个文件,->右键->创建jar,就可以重新生成jar文件了。

  properties是配置文件,主要的作用是通过修改配置文件可以方便的修改代码中的参数,实现不用改class文件即可灵活变更参数。解释:java运行中java文件会变成class文件,之后无法通过反编译找到原样的代码,这样的话,如果java类中某个参数变更,就很难灵活的实现参数修改,这个时候properties 文件就能很灵活的实现配置,减少代码的维护成本和提高开发效率。properties 如上面所说,一般和文件相关。这个文件比较特殊,必须是键值对的形式,就像windows 里的 .ini文件一样,如:
  window=800*600
  screen=1
  左边键名,右边值,用等号连接properties 读取文件后,会存为一个个键值对的形式,key=window value=800*600等.

  5. Ant  build.xml文件说明——java编译部署。

  基本概念,Ant是什么?官方下载地址:https://archive.apache.org/dist/ant/binaries/?C=N;O=D。也可参考:Ant学习笔记(1) 基础知识。可以在控制台直接运行build.xml脚本文件。

  1) ant build.xml 动态修改JDK的版本。在使用ant进行编译程序的时候,我们经常会在一个可持续继承的服务器上面进行。而这些可持续继承的服务器上面往往存放着很多版本的JDK。我们的每个程序可能JDK的版本都是不一样的。这个时候运行ant来进行编译,ant会查找环境变量中的JAVA_HOME 变量。而我们的 JAVA_HOME 变量只能设置一个。要是能够在每个项目的 build.xml 中动态的指定它们各自的 JAVA_HOME 是一件多么幸福的事情啊?方法如下:

  通过下面的在 build.xml 的起始部分配置 env.JAVA_HOME 的属性,可以动态的修改ant编译程序时候所需的不同版本的 JDK。

1 <property name="env.JAVA_HOME" value="D:\develop\jdk\jdk1.6.0_45"/>
2 <echo message="----JAVA_HOME:\t${env.JAVA_HOME}" /> 

  2)ant build.xml java编译部署,可参考 https://www.iteye.com/blog/free-chenwei-1537416 。

  

  3)Ant学习笔记(2) 在Eclipse中使用Ant。编辑和运行Ant的xml脚本。

  通过Eclipese来Ant编辑器编辑build.xml脚本文件,并通过eclipse可视化操作运行改脚本程序

 三、其它问题

  1. eclipse同一个工作空间下分开多个项目。在Package Explorer顶部的右侧有有机表图标按钮,点击倒三角

Top Level Elements->Working Set。此时就会发现,很多项目会自动纳入一个文件夹,这个文件夹的名字叫做other Projects,这是默认的。如果想自己建立自己的文件夹,点击倒三角,Configure Working Set,会出现弹框。

        出现弹框后,点击New按钮,就可以创建文件夹。

        在此界面,双击某一文件夹,就会进入编辑界面,可以修改文件夹名称,也可以选择将

        那个项目放置到该目录下。

        想删除,就选择remove。 

  我们在用Eclipse开发的时候通常会建很多类型的项目,如公司项目、自己项目、Demo等等,并且一个项目又可能有一个主项目和多个引用包,如果包所有的项目都放到一个workspace下面,则会引起混来,工程多的时候不清楚那个是哪个了,找起来十分困难,如果分开放在不同的workspace下面,则需要打开多个eclipse才可以,这样会导致资源占用严重,电脑卡,其不方便。因此我们需要考虑如何用Eclipse自身功能来实现分类管理。

  Eclipse提供了一个可以分文件夹管理的工具Working sets,我们可以按照项目把所有的工程进行分类。分类管理开Package Explorer中查看,建立分类的方法如下:

方法介绍如下:

  1). Package Explorer --> filter --> Top Level Elements ---> Working sets
  2). Package Explorer 右键 new --->other --->java---> java working set
  3). 输入 working set 的 name时 把你的项目add / add all 到新建的 working set 中。
  4).Selected Working Set,选中你刚新建的那个working se即可

转载自:http://www.cnblogs.com/luckyStone/p/6832795.html

 
  2. idea与eclipse项目相互导入方式
  其它导入方式也可参考:https://www.cnblogs.com/ceshi2016/p/7890809.html
 
posted @ 2019-08-26 18:16  傍风无意  阅读(362)  评论(0)    收藏  举报