无法解析类型 java.sql.Wrapper。从必需的 .class 文件间接引用了它

刚用了一个数据库连接池,在公司电脑上测试时报错

无法解析类型 java.sql.Wrapper。从必需的 .class 文件间接引用了它


找了下原因,原来这个Wrapper类是JDK1.6 版本才提供的,公司的环境是JDK 1.5。。。。
百度下,发现类似的也很多,大多是JDK版本过低的问题,也有包引用错了导致的。

好吧,附上我的任意切换JDK版本的方法。
假设我现在安装的是旧版本的JDK1.5,那么在系统环境变量里我们设置了java_home和classpath,对应存放的注册表项是(HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Environment),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,javaws.exe这3个可执行文件拷贝到%SystemRoot%\system32目录下,由于%SystemRoot%\system32被操作系统缺省的设置为最高优先权的PATH搜索路径,因此可保证用户在命令行任何目录下可运行java.exe来启动JVM。
所以,
第一步是备份上面提到的四个注册表项和那三个可执行文件;
第二步,安装高版本的JDK 1.7,修改环境变量,然后备份上面提到的四个注册表项和那三个可执行文件;
第三步:把第一步得到的所有文件放到一个命名“1.5”文件夹中,把第二步得到的所有文件放到一个命名“1.7”文件夹中;
第四步:在每个文件夹下写如下的脚本:
@echo off 
echo 设置JDK 1.5……
dir
copy /y java.exe %SystemRoot%\system32
copy /y javaw.exe %SystemRoot%\system32
copy /y javaws.exe %SystemRoot%\system32
pause

目录结构如下
├─1.5
│      1.5.bat
│      java.exe
│      javaw.exe
│      javaws.exe
│      jdk1.5.reg
│      jdk1.5_.reg
│     
├─1.7
│      1.7.bat
│      java.exe
│      javaw.exe
│      javaws.exe
│      jdk 1.7_.reg
│      jdk1.7.reg
     1.7文件夹下的只需要改下提示就可以了。现在的JAVA环境已经是JDK1.7了,我们到1.5下执行“1.5.bat”,导入注册表,JAVA环境就降成1.5了,反之,到1.7文件夹下执行“1.7..bat”,导入注册表,环境就变成1.7了,可以随意切换。
turn_jdk_Environment.png

如果用eclipse的话,只要装一个高版本的JDK即可,在项目属性上设置JRE兼容性,不用这么麻烦。但对于netbeans则比较麻烦,可以借鉴此文。
白菜的弟弟的同学的老师的儿子的妈妈养的小狗的表弟的主人的朋友说看帖不回会被鄙视de

添加新评论 »

【已知曲线:y3+5y-6x+2x2-26=0,求点x=4处的斜率】