`
yyjlinux
  • 浏览: 367916 次
  • 来自: ...
社区版块
存档分类
最新评论

如何清除注册表中的Java安装信息?

    博客分类:
  • Java
阅读更多

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

 

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

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

 

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下很好使,使用时可以根据自己的情况做些调整,脚本内容如下:

 

reg query hklm\software\classes\installer\products /f "java" /s | find "HKEY_LOCAL_MACHINE" > deljava.txt
for /f "tokens=* delims= " %%a in (deljava.txt) do reg delete %%a /f
del deljava.txt
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" /f
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,完成
分享到:
评论

相关推荐

    如何清除注册表中的Java安装信息

    在Windows中,如果本地安装过Java,但存在问题无法使用,需要重新安装同版本的Java时,会提示如下信息: Java代码 1. This software has already been installed on your computer. Would you like to reinstall ...

    JAVA上百实例源码以及开源项目

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    JAVA上百实例源码以及开源项目源代码

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    Windows Install Clean Up

    - 移除选定软件在文件和注册表中保存的相关配置信息。 注意:如果您想使用此工具来删除先前的配置信息并再次安装软件,我们推荐您前后两次安装都指向相同的路径。这样可以最大限度避免程序文件重复存在于硬盘上进而...

    windows下的jdk环境变量设置

    jvm环境变量,如果以前有旧的jvm删掉了,要记得把注册表的java项清除后再装新的

    java-j2ee项目实例

    客户管理消除了营业厅应不及时的负面影响 减轻了营业员业务压力 项目功能:1产品/业务展览动态更新窗口 顾客网上注册 顾客登录验证后注册表修改或删除重注册 2 客户通话: 客户验证登录获得客户操作权 获得通话...

    JAVA核心知识点整理(有效)

    标记清除算法(Mark-Sweep) .............................................................................................. 27 复制算法(copying)...............................................................

    KCleaner v3.6.3.102.zip

    KCleaner可以帮助用户是吸纳轻松清除计算机里的临时文件和不需要的文件,以及系统垃圾、像程序垃圾、浏览器浏览网页产生的各种垃圾、注册表垃圾等等,并配有自动模式和手动模式两种模式,此外还能设置清除后关机、...

    CCleaner C盘清理工具

    CCleaner 是一款C盘清理工具 ,用于清除c盘中无用的注册表,磁盘垃圾等的小工具,操作简单,清除效果不错!

    Change-OEM:无聊的JFrame练手 用来修改windows显示的制造商型号和logo

    不选择图片则不添加LOGO,制造商和型号信息清空对应也会清除注册表的对应信息。 例如:  点击生成,中途会生成一个 C:\OEM 路径并写入一张图片(你选择的),一个.bat文件,一个.reg文件 成功之后.bat和.reg文件可...

    Distributed-Content-Harvesting-using-Thread-Pools

    该分布式收割机支持的功能包括:消除重复任务,分布式收割机之间的任务切换以及可配置的阈值,这些阈值可用于确定线程池的大小并在爬网期间控制递归深度。 收集器还可以检测特定Web域中不相交的子图和断开的链接。 ...

    C#微软培训资料

    18.1 注册表编程 .235 18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 ...

    ASP200问.EXE

    163.如何在ASP中调用Java类 164.如何在线压缩和解压缩WinRAR文件 第11章 综合开发 166.如何实现聊天室功能 167.如何实现网上投票调查 168.如何实现购物车功能 169.如何实现在线影音播放 170.如如何实现论坛功能 ...

    网管教程 从入门到精通软件篇.txt

    如果不能在启动目录(默认为 %systemroot%System32)中找到该文件,将试着在 Windows 安装 CD 中找到它。如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart  创建和删除硬盘...

    飞鸽传书Ver2.06

    若发送者关闭或重启了 IPMsg, 则附带的文件信息将被清除, 接收者将不能继续接收(下载)到此文件. - 用户列表前缀符号说明 ":" 表示用户处于离开模式. "|" 表示用户使用的不是 2.0 以上版本的 IPMsg, 将...

    飞鸽传书Ver2.06源码

    若发送者关闭或重启了 IPMsg, 则附带的文件信息将被清除, 接收者将不能继续接收(下载)到此文件. - 用户列表前缀符号说明 ":" 表示用户处于离开模式. "|" 表示用户使用的不是 2.0 以上版本的 IPMsg, 将...

    飞鸽传书(IPMessenger) 源码

     若发送者关闭或重启了 IPMsg, 则附带的文件信息将被清除,  接收者将不能继续接收(下载)到此文件.  - 用户列表前缀符号说明  ":" 表示用户处于离开模式.  "|" 表示用户使用的不是 2.0 以上版本的 IPMsg,  将不...

    ucsFramework:适用于Android的基于MVP的架构框架

    介绍了UI组件配置更改(旋转)中的对象注册表(用于保留复杂对象和“实时”代码的简单机制)。 uistatepreserve-android:用户界面保留 将用户界面状态保留添加到Unified Lifecycle库 使用Ui状态保存注释处理器 UI...

    ttCore:我和其他人的mod的核心库

    添加配置以消除空雾 从2个平板添加配方->全块 修复了一些烦人的烦恼(船现在堆叠到16个,床发出了正确的声音) 添加一个配置以更改砧座修复的最大级别(不再“太贵!”) 添加命令以查询球员的记分牌得分 增加一个...

Global site tag (gtag.js) - Google Analytics