zoukankan      html  css  js  c++  java
  • 为JDK增加新的jar包

    应用程序找不到jdbc驱动通常是由于类路径(环境变量classpath)设置方面问题。另外有的程序不使用classpath,而是使用注册表。有的程序如JBuilder使用自带的jdk。设置不当都可能导致应用程序找不到jdbc驱动。出现诸如java.lang.ClassNotFoundException之类错误
      杀手锏:将jdbc驱动程序包(.jar或.zip文件)扔到jre(jre是jdk的一部分,一般在jdk目录下)目录下的lib目录下的ext目录下,这是java的“系统扩展库”目录,其下文件会被java运行环境自动加载,可消除找不到jdbc驱动程序的现象。
      注意如果你装了多个jdk,请先确认你应用程序运行时使用的是哪个目录下的jre,另外,检查一下注册表中Jdk、jre的版本是否适当。jdbc3.0要求jdk1.4,jdbc2.0一般使用jdk1.3。可能Oracle在你注册表中设置了jdk/jre是低版本,而你的Tomcat要使用高版本,互相打架呢。

    1、jdk1.5目前不宜使用,许多软件只支持jdk1.4,甚至只支持jdk1.3。例如, oracle直到9i第二版才作为新特性宣布支持jdk1.3(见oracle白皮书)。另外, jdk与jdbc要配套,jdk1.3/1.2配jdbc2.0,jdk1.4配jdbc3.0,jdk1.5配jdbc4.0,目前 没几个厂家提供jdbc4.0驱动。

    2、win2003与jdk有点不兼容,win2000下正常的java程序在win2003下出问题的情形已有先例。非要用win2003不可时,考虑设置为兼容win2000模式。

    3、java程序放在带空格或汉字路径下,某些场合可能有问题。此外,设置 classpath时,好像要把该路径整个加上引号。

    4、使用“杀手锏”时,classpath环境变量中对驱动程序不再需要设置,设了也没用。

    5、【举例】如果jdk装在D:\j2sdk140目录,那么SQL Server的mssqlserver.jar不是放在D:\j2sdk140\lib\mssqlserver.jar,而是放在D:\j2sdk140\jre\lib\ext\mssqlserver.jar,其它两个文件msbase.jar、msutil.jar也类似处理。

    6、java“扩展库目录”中的jar文件其地位是作为java本身(扩展)的类库文件, 在java运行时会自动加载,然后这些文件被java系统封锁,不能删除。所以, 检查驱动程序包文件(如mssqlserver.jar)是否对位的方法是:运行一个java程序(不管它是否使用jdbc),然后删除驱动包文件,如果报“共享冲突”之类错误,就表示该包已经被java用了,这时除非Class.forName中的类名写错, 否则没有找不到驱动程序类而报java.lang.ClassNotFoundException之类错误的道理。

    7、装有多个jdk时,问题复杂些,但不是杀手锏不行。可以用windows搜索功能找一下机器上究竟有多少个java.exe、javaw.exe,以它们所在目录为当前目录,执行java.exe -version查看版本信息,并把各个java.exe、javaw.exe所对应的jre\lib\ext都放上驱动包应该可以被找到。但找到驱动后,连不上服务器,那是另外的问题了。例如,出现错误信息:[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket时,从字面上看,jdbc驱动已经找到并运行了。这时连不上可能是url没写对、jdk与jdbc版本不配、jdbc与服务器不配等别的原因了。“杀手锏”已经奏效。

    8、装多个jdk时,应检查注册表JavaSoft下记载的jdk、jre路径及记载的当前版本信息,有的程序使用注册表信息,如果装了多个版本jdk,而注册表中只有一个作为当前版本,那么这个版本合适吗?每个jdk安装时可能都在环境变量path中加入其相关路径,而只有排在前面的路径起作用,可用set命令查看环境变量。当你在dos窗口或在bat中运行java.exe、javaw.exe时,如果当前目录没有可执行文件java.exe或javaw.exe,windows会在path记载的各个路径下依次查找,按路径次序找到的第一个java.exe或javaw.exe的版本是否符合要求。每个软件的bat经常设置classpath、path、JAVA_HOME等环境变量,多个软件的设置可能互相影响。遇到问题时,可仔细分析这些因素。tomcat 与oracle有时“打架”,可以从tomcat用的jdk版本通常较高,oracle带的jdk版本通常较低着手分析解决。

  • 相关阅读:
    Linux内核网络协议栈优化总纲
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 判断字符位置
    Java实现 蓝桥杯VIP 算法训练 判断字符位置
    Java实现 蓝桥杯VIP 算法训练 链表数据求和操作
  • 原文地址:https://www.cnblogs.com/liudong/p/1211982.html
Copyright © 2011-2022 走看看