为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不面对java.lang.ClassNotFoundException的情况下向WAR项目添

如何在不面对java.lang.ClassNotFoundException的情况下向WAR项目添

慕妹3242003 2019-06-20 15:49:07
如何在不面对java.lang.ClassNotFoundException的情况下向WAR项目添加JAR库?Classpath与构建路径VS/Web-INF/lib如何向Eclipse中的WAR项目添加JAR库java.lang.ClassNotFoundException或java.lang.NoClassDefFoundError?这个CLASSPATH环境变量似乎不起作用。在某些情况下,我们将JAR文件添加到构建路径属性,以使代码编译。我们有时需要把JAR文件放进去/WEB-INF/lib文件夹中的JavaEEWeb应用程序,以使代码在该JAR中的类上运行。我不太明白为什么CLASSPATH不起作用,在这种情况下,我们应该将jar添加到构建路径准确地说,这些罐子应该放在什么时候?/WEB-INF/lib.
查看完整描述

3 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

这个CLASSPATH环境变量仅由java.exe命令,甚至只有在没有任何-cp-classpath-jar争论。Eclipse、NetBeans和IDEA等IDE忽略了它。另见尽管使用CLASSPATH环境变量,java.lang.ClassNotFoundException.

这个构建路径仅适用于获得项目代码编译所需的库。手动放罐/WEB-INF/lib,或设置部署程序集,或者让外部构建系统(如Maven)将<dependency>像罐子一样/WEB-INF/lib在构建过程中产生的WAR,只适用于需要在目标环境上部署和运行代码的库。请注意,您不应该在/WEB-INF/lib..罐子必须放在根上。

有些库已经由目标JavaEE服务器或servlet容器提供,如JSP、Servlet、EL等。因此,不需要将这些库的JAR放在/WEB-INF/lib..而且,它只会导致类加载问题。(间接地)将它们指定为构建路径只有。在Eclipse中,通常通过设置目标运行时因此。它会自动进入构建路径..另见如何在Eclipse项目中导入javax.ServletAPI?

其他库,通常是第三方库,如Apache Commons、JDBC驱动程序和目标servlet容器不提供的标准库(例如Tomcat不支持JSF、CDI、JPA、EJB等),最终需要在/WEB-INF/lib..您不一定需要在构建路径..也许只有当你已经拥有它的时候用户库,但你应该使用部署程序集这一切的背景。另见在Eclipse构建路径中使用用户库时的ClassNotFoundException.

如果您正在使用Maven,则需要确保将库标记为<scope>provided</scope>如果目标运行时(如JavaEE、servlet、EL等)已经提供了这些功能,以防止部署到WildFly、Tomee等。/WEB-INF/lib(并可能导致与服务器绑定库的冲突),但它们最终将出现在Eclipse的构建路径(并将项目的代码编译)。


查看完整回答
反对 回复 2019-06-20
?
白衣非少年

TA贡献1155条经验 获得超0个赞

构建路径中的JAR仅为构建(编译)过程引用。如果您导出Web应用程序,则它们不包含在最后的WAR中(试试看)。

如果运行时需要JAR,则必须将它们放在Web-INF/lib或服务器类路径中。将您的JAR放置在服务器类路径中只有在多个WAR共享公共代码库的情况下才有意义。需要访问共享对象(例如Singleton)。


查看完整回答
反对 回复 2019-06-20
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

如果你用马文:

打开项目属性,然后在部署程序集点击添加.。

然后选择Java构建路径条目并选择Maven属地


查看完整回答
反对 回复 2019-06-20
  • 3 回答
  • 0 关注
  • 715 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信