为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版本通常较低着手分析解决。

转载于:https://www.cnblogs.com/liudong/archive/2008/06/02/1211982.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Jetty 10之所以没有提供独立的jar包,是因为它采用了模块化的架构。在Jetty 9及之前的版本中,所有的模块和依赖都被打包成一个巨大的jar文件,这种做法在管理和部署方面存在一些问题。 为了解决这些问题,Jetty 10将其架构进行了重大改进。它采用了OSGi标准来实现模块化,这意味着每个功能模块都可以独立打包和部署,并且可以根据需要动态加载和卸载。这样做的好处是增加了灵活性和可维护性,同时还减少了应用程序的体积。 在Jetty 10中,我们需要使用Maven或其他构建工具来显式地引入我们需要的模块。例如,如果我们需要使用Jetty的Servlet模块,我们可以通过在pom.xml文件中添加相应的依赖来实现。这种方式让我们更加精确地管理我们的项目依赖,并且可以根据需求定制我们的应用程序。 尽管Jetty 10没有提供独立的jar包,但这并不意味着它变得更加复杂或难以使用。事实上,通过模块化的架构,Jetty 10为开发人员提供了更多的灵活性和控制权,并且使得项目的管理和部署更加容易。虽然需要一些额外的配置和学习成本,但这种改变为长期开发和维护带来了许多好处。 ### 回答2: Jetty是一个开源的Java HTTP服务器和Servlet容器。Jetty 10没有单独的jar包,而是采用了模块化的设计思路。Jetty 10使用了Java 9的模块化功能,这意味着Jetty 10的代码被分解为多个模块,每个模块都可以单独使用或者组合在一起。 传统的Jar文件包含了所有的类和依赖库,这意味着无论你是使用这些类和依赖库,你都需要添加整个Jar文件。这在某些情况下会导致冗余和冲突。 而使用模块化的设计,Jetty 10允许开发者按需选择所需要的模块,通过声明依赖关系,只引入必需的模块。这样可以减少冗余,并且避免冲突。因此,Jetty 10不再提供单独的jar包,而是以模块化的方式提供。 通过模块化的设计,Jetty可以更加灵活和可定制。开发者可以根据自己的需求选择需要的模块,减少不必要的资源消耗。同时,这也方便了Jetty的维护和版本管理,可以更好地支持Java版本和特性。 总之,Jetty 10不再提供单独的jar包,而是采用了模块化的设计。这样的设计让Jetty更加灵活、可定制,并且更好地适应了Java版本和特性。 ### 回答3: Jetty 10是一个开源的Java Web服务器和Servlet容器。与以往的Jetty版本不同,Jetty 10不再提供单独的可执行的jar包。这是因为Jetty 10采用了一种的构建和部署模型,它更加灵活和模块化。 在Jetty 10中,整个服务器被拆分成了一系列的模块,每个模块都可以单独安装和使用,以满足不同的需求。这种模块化的设计使得Jetty 10更加轻量级,同时也方便了定制和扩展。 为了使用Jetty 10,你需要使用构建工具(如Maven)来导入所需的Jetty模块。你可以根据自己的需求选择要导入的模块,以构建一个适合你应用程序的定制化Jetty服务器。这种模块化的设计也使得Jetty 10更容易与其他开发工具和框架集成。 另外,Jetty 10还采用了Java 9的模块化系统,即Java Platform Module System(JPMS)。这使得Jetty 10可以更好地与Java 9及更高版本的JDK集成,并且能够在模块路径下运行。 总之,Jetty 10不提供单独的jar包是因为它采用了基于模块化的构建和部署模型,使得Jetty更加灵活、轻量级和可定制。使用Jetty 10时,你需要使用构建工具导入所需的模块,以构建一个适合你应用程序的定制化Jetty服务器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值