這個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的構建路徑(并將項目的代碼編譯)。