62,610
社区成员
发帖
与我相关
我的任务
分享
在项目属性中选了 64 位 JRE /JDK 库,但你在运行时依然可以换32位的 JDK / JRE,这要看你的 Launching profile 是怎么配置的,eclipse 默认地做法是把你的项目的 build path 中的设置复制过去当默认值,但我们可以手工改它。 正确,Java 编译得到的结果是抽象化的字节码,并未直接对应到机器码。这个时候是不需要知道目标机器是什么操作系统平台或硬件平台的。但 DLL 相关的东西就不同了它本身是 native 的,就是跟硬件平台和操作系统平台直接相关,在编译链接的过程中已经确定了。 你说的 Eclipse 的自己运行所用的 JRE 那只是“让 Eclipse 运行起来”,它跟我们开发时编译一个项目没有任何关系。比如你用一个 JRE 1.3 运行一个老版本的基于 Eclipse 2.1 IBM WSAD 5.1.2,但它的 workspace 中的项目都是 WebSphere 5.1 对应的 JDK 1.4 的,这没有任何问题。 [quote=引用 10 楼 u010111184 的回复:] [quote=引用 5 楼 humanity 的回复:] 纠正: 因此编译的过程当然就跟操作系统 【没】有关系。 [quote=引用 4 楼 humanity 的回复:] Java “一次编译,到处运行” 就是要解决跨平台的问题,让 Java 代码与平台无关(只要我们不直接使用 DLL 或操作系统特有的功能)。因此编译的过程当然就跟操作系统有关系,而在运行的时候则需要让 JVM 与相应的操作系统配对,然后我们能过配置命令行参数来记程序与操作系统配合(这个时候已经与程序开发没有关系了吧)。
正确,Java 编译得到的结果是抽象化的字节码,并未直接对应到机器码。这个时候是不需要知道目标机器是什么操作系统平台或硬件平台的。但 DLL 相关的东西就不同了它本身是 native 的,就是跟硬件平台和操作系统平台直接相关,在编译链接的过程中已经确定了。
你说的 Eclipse 的自己运行所用的 JRE 那只是“让 Eclipse 运行起来”,它跟我们开发时编译一个项目没有任何关系。比如你用一个 JRE 1.3 运行一个老版本的基于 Eclipse 2.1 IBM WSAD 5.1.2,但它的 workspace 中的项目都是 WebSphere 5.1 对应的 JDK 1.4 的,这没有任何问题。
[quote=引用 5 楼 humanity 的回复:]
纠正:
因此编译的过程当然就跟操作系统 【没】有关系。
[quote=引用 4 楼 humanity 的回复:]
Java “一次编译,到处运行” 就是要解决跨平台的问题,让 Java 代码与平台无关(只要我们不直接使用 DLL 或操作系统特有的功能)。因此编译的过程当然就跟操作系统有关系,而在运行的时候则需要让 JVM 与相应的操作系统配对,然后我们能过配置命令行参数来记程序与操作系统配合(这个时候已经与程序开发没有关系了吧)。
纠正: 因此编译的过程当然就跟操作系统 【没】有关系。 [quote=引用 4 楼 humanity 的回复:] Java “一次编译,到处运行” 就是要解决跨平台的问题,让 Java 代码与平台无关(只要我们不直接使用 DLL 或操作系统特有的功能)。因此编译的过程当然就跟操作系统有关系,而在运行的时候则需要让 JVM 与相应的操作系统配对,然后我们能过配置命令行参数来记程序与操作系统配合(这个时候已经与程序开发没有关系了吧)。
纠正: 因此编译的过程当然就跟操作系统 【没】有关系。 Java “一次编译,到处运行” 就是要解决跨平台的问题,让 Java 代码与平台无关(只要我们不直接使用 DLL 或操作系统特有的功能)。因此编译的过程当然就跟操作系统有关系,而在运行的时候则需要让 JVM 与相应的操作系统配对,然后我们能过配置命令行参数来记程序与操作系统配合(这个时候已经与程序开发没有关系了吧)。
可能是运行时找的变量里的路径,你环境配的是32位的,估计是这个原因吧。
这样可以查看你安装路径,
Java “一次编译,到处运行” 就是要解决跨平台的问题,让 Java 代码与平台无关(只要我们不直接使用 DLL 或操作系统特有的功能)。因此编译的过程当然就跟操作系统有关系,而在运行的时候则需要让 JVM 与相应的操作系统配对,然后我们能过配置命令行参数来记程序与操作系统配合(这个时候已经与程序开发没有关系了吧)。