亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在不面對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 關注
  • 796 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號