java -version 时出现 could not open D:\java\lib\i386\jvm.cfg是什么意思

如题所述

应该是文件缺失导致的问题。
JDK在安装的过程当中将会生成如下3个项目:
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Plug-in
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment

同时,JDK安装程序将会把java.exe,javaw.exe,javareg.exe这3个可执行文件拷贝到winnt\system32目录下,由于 winnt\system32被操作系统缺省的设置为最高优先权的PATH搜索路径,因此可保证用户在命令行任何目录下可运行java.exe来启动 JVM。
java.exe在启动时是通过下面方式来确定的:
假如存在../jre/bin/java.dll文件,则查找../jre/lib/ jvm.cfg文件,在该文件中,第1个被列出的jvm.dll类型作为缺省值(假如在java.exe命令行指定了jvm.dll的类型,则使用指定类型)。jvm.dll类型分为hotspot,classic,server三种。假如不存在../jre/lib/jvm.cfg文件,则打印你说的错误信息。
解决方案:
1.将JDK拷贝到注册表里面的路径下,如果文件夹的名称不一样的话也要改成和注册表里面一样的。
2.重新安装JDK。
建议解决办法:
a.重新安装JDK到任意目录,假设这个目录是C:\java。
b.将装好的JDK,JRE拷贝到任意一个其他目录,如D:\bak,这样做的目的主要是为了备份JDK。
c.制面板里面将JDK,JRE卸载了,这样你电脑里面就没有安装JDK了,也就是说注册表里面没有安装信息了。
d.你会发现C:\java里面的JDK已经被卸载掉了,这是将D:\bak里面的备份JDK拷会到C:\ava里面,然后设置环境变量
JAVA_HOME: C:\java\JDK1.5.0
path里面添加: %JAVA_HOME%\bin
设置classpath: .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar
这是,你就拥有了与注册表无关的JDK了,可以随意移动位置,移动以后只要修改 JAVA_HOME为移动以后的路径就可以了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-04
卸载JDK导致的can not open ‘E:\java\lib\i386\jvm.cfg

默认分类 2010-04-20 20:14:34 阅读661 评论5 字号:大中小 订阅
本方法是我亲自实践所得,绝对有效。

问题:很多人卸载JDK时,会遇到很大的麻烦,重装之后发现,javac命令可以用,但是java命令不可用(cmd命令提示符中)。即使我们刚开始把与java有关的东西删除的很干净,重装之后在执行时同样会碰到输入Java命令是出现这样的情况“can not open ‘E:\java\lib\i386\jvm.cfg”(这与装的文件夹有关,提示略微不同)。甚至有人用windows 优化大师,超级兔子的智能卸载JDK,都会出现这样的问题。sun公司的说法是:http://java.com/en/download/help/uninstall_java.xml,同时sun也给出了解决办法:

If the normal uninstallation process (as mentioned above) fails, then please try Microsoft Windows Installer Cleanup Utility. This tool will ensure that all irrelevant Java Runtime Environment Microsoft Installer (msi) registries are removed. Detailed information and download is available at: Description of the Windows Installer CleanUp Utility (大概是叫我们去下载一个注册表清理器)

一大堆英文,不是看的很懂,还要去下载到微软下载一个注册表清理器,还是英文,一个字“晕”。我碰到这个问题是我使尽了所有的办法,甚至动了重装系统的念头,心里特别的不爽。自己动手改注册表,来解决这个问题

解决方法:(一定要卸载JDK之后使用此方法)

一、在点击开始--》运行-》输入regedit确定打开注册表。

二、 找到HKEY_LOCAL_MACHINE/software/javasoft,把这个javasoft删除即可。javasoft正常情况下至少包含\Java Development Kit,Java Plug-in,Java Runtime Environment这三项,不用怕,删除Javasoft就会把这三项都删除,问题本身也是出在这里,所以需要删除javasoft项。

三、重装JDK(如果不改变文件位置都选默认,那是最好不过的啦!)重装后会发现,重新有一个HKEY_LOCAL_MACHINE/software/javasoft项,这是这些参数都是新的了,不会出现问题了。

当然网上有许多方法,我个人觉得比较杂乱,我找了几个小时,翻来覆去重装都得不到解决,后来还是自己把这个问题解决了,这个解决方案的原因我就不解释了,要知道原因,你先把不用这种方法和用种方法后javasoft里面各项值有都记载下来,然后一一对比,这样你就会发现问题了。当然也可以在电脑出现这样的问题时和另一台装有JDK的电脑的javasoft里面的各项值做对比。我想这样你肯定能发现有什么不同了。

清理完注册标志后呢,强烈建议还是重启下比较好的!

http://ygl6566.blog.163.com/blog/static/17196093201032081434823/

给你参考
第2个回答  2010-12-05
1 我很奇怪的是你的java安装在C盘也就是你JVM虚拟机也安装在C盘
但为什么你在运行java去执行目标class文件时会到D盘去寻找JVM。
2 我想你一下在CMD中输入java应该可以打印出他的说明也就是参数
输入javac也可以打印出说明,而且你的javac可以编译java源文件,问题是执行java找不到.class目标文件。
有可能是你在classpath系统变量中没有加入 .; 这个标识当前目录的的参数。 如果你已经加入了,可以把你的path和classpath在看一下,查看一下里面有没有以前设定的JDK路径,也就是路径不同导致的。

分析的已经够详细的了,希望对你能有所帮助。
第3个回答  2010-12-04
class Hello {
public static void main(args string []){
System.out.println("d lkfjien");
}
}
是没写在main()里的原因
相似回答