Eclipse中用Class.forName的包导入问题!
Eclipse中使用外部Jar时配置问题要在工程中使用Sqlserverjdbc,sqljdbc4.jar已经放在W:\ProgramFiles\Web\ExtJar中。...
Eclipse中使用外部Jar时配置问题
要在工程中使用Sqlserver jdbc,sqljdbc4.jar已经放在W:\ProgramFiles\Web\ExtJar中。问题每次运行Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")”都报ClassNotFound错误。问一下为什么呀?怎么改?
如果我把sqljdbc4.jar放在tomcat的lib目录下,eclipse中相应变一下就可以正常使用了。
1) 电脑属性->环境变量->ClassPath中已经设置了该目录。
2) Eclipse中Java->BuildPath->User Libraries已经引入该包;
3) Eclipse中Java->BuildPath->Classpath Variable中叶设置了路径;
4) 工程的Resource->JavaResources->Libraries中叶已经引入了该包。 展开
要在工程中使用Sqlserver jdbc,sqljdbc4.jar已经放在W:\ProgramFiles\Web\ExtJar中。问题每次运行Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")”都报ClassNotFound错误。问一下为什么呀?怎么改?
如果我把sqljdbc4.jar放在tomcat的lib目录下,eclipse中相应变一下就可以正常使用了。
1) 电脑属性->环境变量->ClassPath中已经设置了该目录。
2) Eclipse中Java->BuildPath->User Libraries已经引入该包;
3) Eclipse中Java->BuildPath->Classpath Variable中叶设置了路径;
4) 工程的Resource->JavaResources->Libraries中叶已经引入了该包。 展开
3个回答
展开全部
可怜的娃啊,Java Build Path 这个名字已经告诉你,这是编译构建程序用的,隐含了这不是运行时的配置。
当你的程序在 Tomcat 上运行时就得按 Tomcat 服务器的设置来配置,J2EE 标准的方法那就是把 jar 放到 WEB-INF/lib 目录下。如果你依然想让 Tomcat 使用电脑上的外部目录下的 jar ,你得在 Monitor Tomcat 那个程序的配置框中添加 classpath。如果你的 Tomcat 是安装版本的,在开始菜单上就有 Monitor Tomcat。
J2EE 中一程序是允许被部署多次的,比如同一个 war 或 ear 部署成两个不同名字的应用程序,每个给不同的客户使用,它们的逻辑可能略有不同,但EJB 名字配置等都一样,各自使用不同的数据库配置。那么这时 J2EE 服务器是为它们提供了这种同时运行的支持,那就是 每个Application 本身有自己的 ClassLoader,比如 EAR 是自己的,ear 里面的 war 可以选择有一个自己的 sub class loader,而另一个独立的不属于任何一个 ear 的 war 也可以像 ear 那样有个 application 级的 class loader。 Java 设计中 Class Loader 是一个名字空间,用来隔离对象的,两个对象即使类名包名完全相同,但 class loader 不同,依然在赋值时产生 ClassCastException,因为在 JVM 看来它们的名字其实不同。这就是为什么 J2EE 服务器中配置类路径有些讲究的原因。你至少不能破坏这种约定。
我之前用过 Sybase EAServer 4.1 - 5.5,它自称支持 J2EE 1.2 - 1.3 ,但实际上它为了同时支持异构分布式 (CORBA, EJB , ActiveX, PowerBuilder NVO) 几种混合使用,它把类路径搞得不符合 J2EE 的要求,实际上不完全支持 J2EE 1.3 对这个 Class Loader 隔离的要求。因为它为了支持 CORBA,把 EJB 的接口类及依赖的文件解压到了一个服务器共用的目录下,这就是说当一个 EJB 的两个不同版本就会互相覆盖,不能同时工作。
当你的程序在 Tomcat 上运行时就得按 Tomcat 服务器的设置来配置,J2EE 标准的方法那就是把 jar 放到 WEB-INF/lib 目录下。如果你依然想让 Tomcat 使用电脑上的外部目录下的 jar ,你得在 Monitor Tomcat 那个程序的配置框中添加 classpath。如果你的 Tomcat 是安装版本的,在开始菜单上就有 Monitor Tomcat。
J2EE 中一程序是允许被部署多次的,比如同一个 war 或 ear 部署成两个不同名字的应用程序,每个给不同的客户使用,它们的逻辑可能略有不同,但EJB 名字配置等都一样,各自使用不同的数据库配置。那么这时 J2EE 服务器是为它们提供了这种同时运行的支持,那就是 每个Application 本身有自己的 ClassLoader,比如 EAR 是自己的,ear 里面的 war 可以选择有一个自己的 sub class loader,而另一个独立的不属于任何一个 ear 的 war 也可以像 ear 那样有个 application 级的 class loader。 Java 设计中 Class Loader 是一个名字空间,用来隔离对象的,两个对象即使类名包名完全相同,但 class loader 不同,依然在赋值时产生 ClassCastException,因为在 JVM 看来它们的名字其实不同。这就是为什么 J2EE 服务器中配置类路径有些讲究的原因。你至少不能破坏这种约定。
我之前用过 Sybase EAServer 4.1 - 5.5,它自称支持 J2EE 1.2 - 1.3 ,但实际上它为了同时支持异构分布式 (CORBA, EJB , ActiveX, PowerBuilder NVO) 几种混合使用,它把类路径搞得不符合 J2EE 的要求,实际上不完全支持 J2EE 1.3 对这个 Class Loader 隔离的要求。因为它为了支持 CORBA,把 EJB 的接口类及依赖的文件解压到了一个服务器共用的目录下,这就是说当一个 EJB 的两个不同版本就会互相覆盖,不能同时工作。
展开全部
可以在项目新建一个文件夹 lib 将包放进去 然后再引进项目就行啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你建的是什么项目,是SE还是EE?
追问
Web Dynamic Project,我不知道这个属于ee还是se的
追答
那你有没有用到框架啊,以前学纯Servlet的时候就需要在eclipse里面也放上对应的数据库jar包,用了框架之后你就不需要了,可能框架自动帮你做了处理,至于怎么处理的我就不清楚了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询