猿问

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

如何在不面对java.lang.ClassNotFoundException的情况下向WAR项目添加JAR库?Classpath与构建路径VS/Web-INF/lib

如何向Eclipse中的WAR项目添加JAR库java.lang.ClassNotFoundExceptionjava.lang.NoClassDefFoundError?

这个CLASSPATH环境变量似乎不起作用。在某些情况下,我们将JAR文件添加到构建路径属性,以使代码编译。我们有时需要把JAR文件放进去/WEB-INF/lib文件夹中的JavaEEWeb应用程序,以使代码在该JAR中的类上运行。

我不太明白为什么CLASSPATH不起作用,在这种情况下,我们应该将jar添加到构建路径准确地说,这些罐子应该放在什么时候?/WEB-INF/lib.


慕妹3242003
浏览 753回答 3
3回答

慕标琳琳

这个CLASSPATH环境变量仅由java.exe命令,甚至只有在没有任何-cp,&nbsp;-classpath,&nbsp;-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的构建路径(并将项目的代码编译)。

白衣非少年

构建路径中的JAR仅为构建(编译)过程引用。如果您导出Web应用程序,则它们不包含在最后的WAR中(试试看)。如果运行时需要JAR,则必须将它们放在Web-INF/lib或服务器类路径中。将您的JAR放置在服务器类路径中只有在多个WAR共享公共代码库的情况下才有意义。和需要访问共享对象(例如Singleton)。

慕姐4208626

如果你用马文:打开项目属性,然后在部署程序集点击添加.。然后选择Java构建路径条目并选择Maven属地
随时随地看视频慕课网APP
我要回答