這個(gè)CLASSPATH
環(huán)境變量?jī)H由java.exe
命令,甚至只有在沒(méi)有任何-cp
, -classpath
, -jar
爭(zhēng)論。Eclipse、NetBeans和IDEA等IDE忽略了它。另見盡管使用CLASSPATH環(huán)境變量,java.lang.ClassNotFoundException.
這個(gè)構(gòu)建路徑僅適用于獲得項(xiàng)目代碼編譯所需的庫(kù)。手動(dòng)放罐/WEB-INF/lib
,或設(shè)置部署程序集,或者讓外部構(gòu)建系統(tǒng)(如Maven)將<dependency>
像罐子一樣/WEB-INF/lib
在構(gòu)建過(guò)程中產(chǎn)生的WAR,只適用于需要在目標(biāo)環(huán)境上部署和運(yùn)行代碼的庫(kù)。請(qǐng)注意,您不應(yīng)該在/WEB-INF/lib
..罐子必須放在根上。
有些庫(kù)已經(jīng)由目標(biāo)JavaEE服務(wù)器或servlet容器提供,如JSP、Servlet、EL等。因此,不需要將這些庫(kù)的JAR放在/WEB-INF/lib
..而且,它只會(huì)導(dǎo)致類加載問(wèn)題。(間接地)將它們指定為構(gòu)建路徑只有。在Eclipse中,通常通過(guò)設(shè)置目標(biāo)運(yùn)行時(shí)因此。它會(huì)自動(dòng)進(jìn)入構(gòu)建路徑..另見如何在Eclipse項(xiàng)目中導(dǎo)入javax.ServletAPI?
其他庫(kù),通常是第三方庫(kù),如Apache Commons、JDBC驅(qū)動(dòng)程序和目標(biāo)servlet容器不提供的標(biāo)準(zhǔn)庫(kù)(例如Tomcat不支持JSF、CDI、JPA、EJB等),最終需要在/WEB-INF/lib
..您不一定需要在構(gòu)建路徑..也許只有當(dāng)你已經(jīng)擁有它的時(shí)候用戶庫(kù),但你應(yīng)該使用部署程序集這一切的背景。另見在Eclipse構(gòu)建路徑中使用用戶庫(kù)時(shí)的ClassNotFoundException.
如果您正在使用Maven,則需要確保將庫(kù)標(biāo)記為<scope>provided</scope>
如果目標(biāo)運(yùn)行時(shí)(如JavaEE、servlet、EL等)已經(jīng)提供了這些功能,以防止部署到WildFly、Tomee等。/WEB-INF/lib
(并可能導(dǎo)致與服務(wù)器綁定庫(kù)的沖突),但它們最終將出現(xiàn)在Eclipse的構(gòu)建路徑(并將項(xiàng)目的代碼編譯)。