在Windows中,如果本地安装过Java,但存在问题无法使用,需要重新安装同版本的Java时,会提示如下信息:

Java代码  
  1. This software has already been installed on your computer. Would you like to reinstall it?

确认后没有响应,或直接报错:

Java代码  
  1. This action is only valid for products that are currently installed.

因而,无法重新安装,也无法卸载Java。

造成这种情况的原因是,原有Java安装目录已经被删除\或损坏了,但注册表中的Java安装信息还存在,这样重装时Java安装程序就会认为已经安装过了。

因而,需要先清除注册表中的Java安装信息,再执行Java安装程序。消除注册表时一定要将关键的Java信息清除干净,如果有残留的键值,则还是无法重装Java。

清除Java注册表时,主要参考了这篇文章:"Java Setup Problem, This action is only valid for products that are currently installed"。

其中提供了JavaMSIFix.exe和fixjava.bat两个修复java的小程序,文章中建议使用JavaMSIFix.exe,说fixjava.bat可能在WinXP有些情况下不好使(有同事的XP环境fixjava.bat直接报语法错误)。我试了下,JavaMSIFix.exe修复Java7时不好使,可能是写程序时Java7还没发布呢,所以没支持,其他Java版本没试过。fixjava.bat这个小程序在Win7下很好使,使用时可以根据自己的情况做些调整,脚本内容如下:

Fixjava.bat代码  
  1. reg query hklm\software\classes\installer\products /f "java" /s | find "HKEY_LOCAL_MACHINE" > deljava.txt
  2. for /f "tokens=* delims= " %%a in (deljava.txt) do reg delete %%a /f
  3. del deljava.txt
  4. reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" /f
  5. reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\JavaSoft\Java Runtime Environment" /f

这个fixjava.bat批处理脚本,就是删除注册表中关键的Java产品信息。我将原脚本中第一行的搜索关键字由java(tm) 6改为java,以更支持删除任意版本的Java注册表。如果Java版本很明确,也可以指定搜索及删除的具体版本,如:

  • java(tm) 5
  • java(tm) 6
  • java 7
建议使用fixjava.bat脚本来消除,一个是有脚本代码,很清楚脚本里做了哪些事情。另一个,也可根据个人的需要来修改脚本,比较灵活。
综上,重新安装Java环境的步骤为:
  1. 创建fixjava.bat脚本,检查代码内容是否满足要求,并编辑保存
  2. 双击执行fixjava.bat脚本,清除注册表中的Java安装信息
  3. 重新执行Java安装程序
  4. Ok,完成
附注:如果上述脚本在WinXP中执行报错,则可以通过手工方式删除注册表中的Java信息,如下:
  1. 将HKEY_LOCAL_MACHINE\software\classes\installer\products下的ProductName项含有"Java"字样的所在分支全部删除,见下图。
  2. 删除HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment分支
  3. 重新执行Java安装程序
  4. Ok,完成

转载:http://yyjlinux.iteye.com/blog/1702709

如何清除注册表中的Java安装信息相关推荐

  1. CAD .net开发-从注册表中获取CAD安装路径

    32位系统: RegistryKey keyLocalMachine = Registry.LocalMachine; 64位系统: Microsoft.Win32.RegistryKey keyLo ...

  2. 注册表中删除java

    注册表里面删除java! 5.0版本注册键值:hkey_local_machine/software/microsoft/windows/currentversion/uninstall/ {3248 ...

  3. 注册表usbstor删除不了_彻底清除注册表U盘与USB使用记录技巧

    相信很多用户会在电脑上使用U盘或其他USB外接设备,为了保护自己的使用隐私,也会有很多用户会清理掉USB端口使用记录,但是极少部分用户不清楚U盘在电脑上使用之后,电脑的注册表中也会留下使用记录,下面豆 ...

  4. JAVA读取注册表中的值

    需求:java动态读取注册表来调用第三方应用程序(如:qq.微信.网易云音乐等)启动,为什么说动态呢,因为使用绝对路径,每个人的电脑安装的路径并不一定相同,但注册表中的路径一般都相同,所以只要获取注册 ...

  5. camel Java to xml_java – 当Camel从XML文件加载路由时,在注册表中找不到Bean

    我在camel中遇到问题,在运行时从 XML加载路由. 我搜索了我的问题,并在 http://grokbase.com/p/camel/users/117w8m6rbm/injecting-data- ...

  6. 从注册表中获取文件的安装路径

    从注册表中取值(Windows平台) 本篇文章的内容是从Windows平台的注册表里取值 程序开发一般都会涉及从注册表获取相关信息,我将以从注册表获取软件的安装路径为例子 一.需求 我现在要获取微信的 ...

  7. 谷歌浏览器本地项目登录失败(cookie未保存)、谷歌浏览器重装失败、谷歌浏览器禁用自动升级、注册表中的谷歌浏览器文件夹删除报错等问题

    问题汇总 谷歌浏览器本地跑Vue项目或别的项目,在登录页面登录时,登录不成功. 谷歌浏览器卸载之后重装失败 注册表中的谷歌浏览器文件夹删除时,报错 谷歌浏览器禁用自动升级 重要的提示:别的系统我不太清 ...

  8. Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结

    Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结 1. 注册表是树形数据库 1 2. 注册表的由来 1 3. Java  操作注册表 2 3.1. 使用Preferences  ...

  9. windows 的使用 —— 注册表(软件的安装和卸载)

    win + r(run):输入 regedit(register edit)进入: 1. 网络连接 比如一些 vpn 安装之后,会对网络连接进行一定的修改,这样在 vpn 工具删除之后,仍然无法消除修 ...

  10. 如何完全卸载oracle和删除oracle在注册表中的注册信息

    卸载步骤介绍 1.停止所有Oracle相关的服务 操作方法: 控制面板-->管理工具 -->服务 -->将所有oracle开头的服务均停止 2.卸载Oracle 10g数据库服务器组 ...

最新文章

  1. 如何处理几十万条并发数据?
  2. Zotero科研文献管理 - 将PDF文件同步到Google Driver中,不同电脑无缝使用
  3. JS 截取字符串及字符与数字转换
  4. 【正一专栏】再见小马哥——永记你含着泪的笑
  5. 牛客网 【每日一题】8月5日题目精讲—蓝魔法师
  6. 投入10个亿,每人奖300万,腾讯给科学界发奖了!
  7. Linux 软件安装到 /usr,/usr/local/ 还是 /opt 目录?
  8. Ubunt 12.04 中的QT中配置Tyin mini210 的交叉编译环境
  9. 微软服务器工程师认证,微软认证的系统工程师(MCSE)
  10. Flipped (怦然心动)
  11. 软件能力成熟度模型CMM
  12. Excel 和Word 常用小技巧
  13. AT89C51(Atmel)芯片制作简易的频率计
  14. 数据结构与算法(Java版) | 就让我们来看看几个实际编程中遇到的问题吧!
  15. 2022最新Android面试题目解答,Android MVP模式详解
  16. elasticsearch analysis模块 自定义分词 拼音分词 同义词 停词
  17. 51单片机学习笔记-8 DS1302实时时钟
  18. 【小波能量BP】基于小波能量系数提取和BP神经网络的检测算法matlab仿真
  19. 整理的300多个User-Agent,拿去玩
  20. 〖产品思维训练白宝书 - 核心竞争力篇⑬〗- 产品经理核心竞争力解读之如何提升沟通能力

热门文章

  1. cpython-36m-x86_64-linux-gnu.so undefined symbol玄学解决
  2. Windows主机连接Windows虚拟机上Oracle数据库
  3. JavaEE Day14 ServletHTTPRequest
  4. Vant_根据已有地址获取code
  5. MYSQL常见命令-Java学习之数据库学习
  6. jQuery下载和基础使用(超详细)
  7. jQuery的下载与基本使用
  8. 解决打开html文件为乱码(完美)
  9. 产品经理如何实现自我提升
  10. 神话情话(神雕侠侣主题曲)铃声 神话情话(神雕侠侣主题曲)手机...