下面我的叙述如果有错误,请大家帮我指出来!谢谢!
1.jre:java程序的运行环境,一般系统不特意安装也会带  在C:\Program Files\Java目录下,里面lib目录下包含了运行java程序时需要的库文件,我把它叫jre111。
2.jdk:针对Java程序开发者的工具集,主要用于编译java源代码,jdk的运行本身就需要jre的支持,所以安装jdk后在jdk目录下也会有个jre(专门用来支持jdk的),我把它叫jre222。3.Eclipse本身带了编译java源代码的程序,所以只要有jre,Eclipse就可以正常编译,运行java程序。指定jre的方法是 窗口-首选项-已安装的jre ,这样就可以改变jre。叙述到此为止问题来了!1. 如果要用eclipse开发java程序,我重新下载eclipse,jdk,jre(我叫它jre333),(jdk包含了jre,我觉得另下载一个jre安装会更好) 分别安装后,jre333应该会覆盖原来的jre111,用上面的方法把eclipse和jre333关联,那怎么把eclipse和jdk关联呢?也就是说不用eclipse自己带的编译器,用我刚安装jdk的。2.编译java程序时会和lib下的库函数进行关联吗?如果关联是不是关联我jdk/lib下的库函数,而不是jre333/lib下的3.如果上面得问题解决了,假设我现在程序编好了,现在要编译程序(也就是说用我刚安装的jdk中javac编译),编译时用的lib是jdk下的 ,而运行时用的是jre333下的lib,那关于lib的版本是怎么匹配的呢?如果jdk和jre333的lib不一致怎么办?
大家看懂我的问题了吗?如果看懂了 请帮我解答下,总有一个问题是你会的!!谢谢!

解决方案 »

  1.   

    用Eclipse编译程序  是用的Eclipse用的那个JDK 
    而不是用command line里面打 java -version的那个JDK
    当然 他们也可能是一个  但感觉你用了很多个
      

  2.   

    囧,您只装eclipse也能运行程序,这就是和你后装什么没关系的
      

  3.   

    1.首先不用关心java下面的lib,因为这个是java系统带的,只要配置好了就好.
    2.其实你不用装那么多java,装一个就够了,都是一样的.
    3.没有看见eclipse自带的java.当楼主用eclipse建立java项目后,楼主可以设置项目的环境,可以任意配置所需要使用的java所在目录.
    4.关于开发和运行会用不同java环境的问题,java一般是向下兼容的,就是如果开发用低版本的,运行时用高版本是没有问题的.反过来就会报错,此时只需要用运行时的版本去编译一下就可以.当开发时需要注意所使用的java版本.不过在实际中这个不是问题.楼主项目还是学习?
      

  4.   

    1.貌似要设置了环境变量JAVA_HOME才能启动Eclipse,设置JAVA_HOME就能关联Eclipse
    2,3两个问题我不会,不过劝楼主也不要费神了。
      

  5.   

    我是在装eclipse时想到的一些问题,就是下载解压,然后什么都没配置(以前也没配过环境变量)
    就可以写代码直接 编译运行了,所以感觉很奇怪、所以在网上查了下,然后自己也想了下,于是引出了这些问题的。 
      

  6.   

    网上有很多做法是先装JDK,设变量, 再装Eclipse 然后就说eclipse自己就会找到你新装的jdk。我就想后装JDK ,Eclipce能否自动找到JDK? 如果不能 要怎么设置?
      

  7.   

    用eclipse可以不用配。配置环境变量,是用命令行编译java所必需的。
    为啥要后装JDK,这是eclipse的运行基本环境。
    你可以先装eclipse,但在建立java项目前需要安装好jdk.楼主用一下就知道了。
      

  8.   

    2.编译java程序时会和lib下的库函数进行关联吗?如果关联是不是关联我jdk/lib下的库函数,而不是jre333/lib下的与lib库函数关联编译?LZ从C转行来的吧,C语言倒是不假,编译完了后有这个过程,叫做链接。java不是编译语言,而是解释语言。不存在这个说法。编译的时候编译器只对你的java代码进行语法及词法分析后生成字节码文件就是.class,编译完了就完了,不会再与类库“链接”,你的代码Import的类在运行的时候由JVM从你的ClassPath进行类加载,完成执行。以上两点是java跨平台的本质和依据。C语言呢?编译完了后生产.o .obj等等中间文件,然后再与库函数.a .lib 链接生产exe/bin/等等可执行程序。
      

  9.   

    续上所以,在java程序里面,环境变量是个非常重要的东西,不仅在编译的时候用的到,在运行的时候一样要用。编译器根据ClassPath来找到你引用的类库进行编译,JVM根据ClassPath指定的类进行加载。C呢?只要编译的时候makefile指定了你的库函数路径,编译器、链接器一次性搞定后,就不再依赖库函数了---因为它们已经编译进了你的应用程序。当然,以上是对于静态链接库程序而言,对于动态链接库程序,程序依赖的dll还是要存在的。所以,至于你说的  “如果关联是不是关联我jdk/lib下的库函数,而不是jre333/lib下的”,只要你的eclipse设置好了工程的BuildPath,设置的哪个,就一直用那个,包括编译和运行
      

  10.   

    现在版本的JDK 和eclipse  不需要这么麻烦的配置
      

  11.   

    有一种情况等价于后装JDK:
    eclipse放在非系统区,重装系统后重新设置环境变量