[英]Java ClassNotFoundException with maven dependency
當我嘗試使用 Maven 定義的依賴項運行我的應用程序時,出現ClassNotFoundException
和NoClassDefFoundError
異常。
我使用以下聲明將我對相關 jar 的 Maven 依賴項添加到我的pom.xml
文件中:
<dependency>
<groupId>spy</groupId>
<artifactId>spymemcached</artifactId>
<version>2.8.4</version>
<scope>provided</scope>
</dependency>
這將相關的 JAR 文件添加到 Eclipse 中我的 Maven Dependencies 文件夾中。 我可以訪問代碼中的類,但是一旦我運行應用程序,我就會得到提到的異常。
在 Maven 依賴項下的我的 Java 構建路徑中引用了該 jar:
我的本地 Maven 存儲庫已添加到我的類路徑中:
當我嘗試運行該應用程序時,出現以下兩個異常:
java.lang.NoClassDefFoundError: Lnet/spy/memcached/MemcachedClient;
java.lang.ClassNotFoundException: net.spy.memcached.MemcachedClient
誰能指出我正確的方向?
為compile
provided
的更改
假如
這很像編譯,但表示您希望 JDK 或容器在運行時提供依賴項。 例如,在為 Java Enterprise Edition 構建 Web 應用程序時,您可以將對 Servlet API 和相關 Java EE API 的依賴設置為提供的范圍,因為 Web 容器提供了這些類。 此范圍僅在編譯和測試類路徑上可用,不可傳遞。
<scope>provided</scope>
“提供”范圍意味着依賴項應該只在編譯階段可用,它們將在運行時的其他地方可用,Maven 不應該將它們與當前應用程序的其余 jar 和類打包在一起。
您的依賴項似乎不在“提供”范圍內。 從您的依賴項定義中刪除該范圍,jar 將出現在您打包的 jar/war/ear 中。
我遇到了同樣的問題,但我沒有在我的 POM 上定義標簽,它一直工作正常,直到有一天突然開始在我的本地機器上無緣無故地給我這個錯誤,依賴項已正確設置在 POM 中,jar 存在於本地 Maven 存儲庫中。
我嘗試清理項目並更新 maven 項目,但沒有任何效果,其他帖子中建議的其他解決方案也不適合我。
我終於能夠通過轉到服務器選項卡 - >右鍵單擊 Tomcat v8.0 - >瀏覽部署位置來解決它
這應該會引導您進入一個臨時文件夾,例如
.metadata.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps
然后你瀏覽到你的項目文件夾 -> WEB-INF -> lib -> 在這里我發現庫中出現錯誤的 jar 丟失了,所以我只是從 .m2\repository 復制它
重新啟動服務器,它又開始照常工作了。
我希望這可以幫助一些面臨同樣問題的機構。
回答與您的問題有些相關,但仍然可以幫助其他人。
在我的情況下,將<scope>compile</scope>
添加到依賴項是不夠的。 我還必須將<packaging>jar</packaging>
添加到目標模塊的 pom。
當我嘗試使用 maven 定義的依賴項運行我的應用程序時,我收到ClassNotFoundException
和NoClassDefFoundError
異常。
我使用以下聲明將有關 jar 的 maven 依賴項添加到我的pom.xml
文件中:
<dependency>
<groupId>spy</groupId>
<artifactId>spymemcached</artifactId>
<version>2.8.4</version>
<scope>provided</scope>
</dependency>
這將相關的 JAR 文件添加到 Eclipse 中的 Maven Dependencies 文件夾中。 我可以在代碼中訪問這些類,但是一旦我運行應用程序,就會得到提到的異常。
jar 在我的 Java 構建路徑中的 Maven 依賴項下引用:
我的本地 Maven 存儲庫已添加到我的類路徑中:
當我嘗試運行該應用程序時,出現以下兩個異常:
java.lang.NoClassDefFoundError: Lnet/spy/memcached/MemcachedClient;
java.lang.ClassNotFoundException: net.spy.memcached.MemcachedClient
任何人都可以指出我正確的方向嗎?
我也面臨同樣的問題,在嘗試了各種解決方案后,問題通過以下步驟得到解決...
單擊服務器 > 打開啟動配置 > 參數(復制“LocalPath\temp0\wtpwebapps”路徑)。
轉到“LocalPath\temp0\wtpwebapps\ProjectName\WEB-INF\lib”。
從 .m2 復制 JAR(導致 ClassNotFoundException)並將其放在“LocalPath\temp0\wtpwebapps\ProjectName\WEB-INF\lib”路徑中。
當我嘗試使用 maven 定義的依賴項運行我的應用程序時,我收到ClassNotFoundException
和NoClassDefFoundError
異常。
我使用以下聲明將有關 jar 的 maven 依賴項添加到我的pom.xml
文件中:
<dependency>
<groupId>spy</groupId>
<artifactId>spymemcached</artifactId>
<version>2.8.4</version>
<scope>provided</scope>
</dependency>
這將相關的 JAR 文件添加到 Eclipse 中的 Maven Dependencies 文件夾中。 我可以在代碼中訪問這些類,但是一旦我運行應用程序,就會得到提到的異常。
jar 在我的 Java 構建路徑中的 Maven 依賴項下引用:
我的本地 Maven 存儲庫已添加到我的類路徑中:
當我嘗試運行該應用程序時,出現以下兩個異常:
java.lang.NoClassDefFoundError: Lnet/spy/memcached/MemcachedClient;
java.lang.ClassNotFoundException: net.spy.memcached.MemcachedClient
任何人都可以指出我正確的方向嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.