簡體   English   中英

具有 Maven 依賴性的 Java ClassNotFoundException

[英]Java ClassNotFoundException with maven dependency

當我嘗試使用 Maven 定義的依賴項運行我的應用程序時,出現ClassNotFoundExceptionNoClassDefFoundError異常。

我使用以下聲明將我對相關 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:

Java構建路徑

我的本地 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 定義的依賴項運行我的應用程序時,我收到ClassNotFoundExceptionNoClassDefFoundError異常。

我使用以下聲明將有關 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 依賴項下引用:

Java構建路徑

我的本地 Maven 存儲庫已添加到我的類路徑中:

截屏

當我嘗試運行該應用程序時,出現以下兩個異常:

java.lang.NoClassDefFoundError: Lnet/spy/memcached/MemcachedClient;

java.lang.ClassNotFoundException: net.spy.memcached.MemcachedClient

任何人都可以指出我正確的方向嗎?

我也面臨同樣的問題,在嘗試了各種解決方案后,問題通過以下步驟得到解決...

  1. 單擊服務器 > 打開啟動配置 > 參數(復制“LocalPath\temp0\wtpwebapps”路徑)。

  2. 轉到“LocalPath\temp0\wtpwebapps\ProjectName\WEB-INF\lib”。

  3. 從 .m2 復制 JAR(導致 ClassNotFoundException)並將其放在“LocalPath\temp0\wtpwebapps\ProjectName\WEB-INF\lib”路徑中。

當我嘗試使用 maven 定義的依賴項運行我的應用程序時,我收到ClassNotFoundExceptionNoClassDefFoundError異常。

我使用以下聲明將有關 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 依賴項下引用:

Java構建路徑

我的本地 Maven 存儲庫已添加到我的類路徑中:

截屏

當我嘗試運行該應用程序時,出現以下兩個異常:

java.lang.NoClassDefFoundError: Lnet/spy/memcached/MemcachedClient;

java.lang.ClassNotFoundException: net.spy.memcached.MemcachedClient

任何人都可以指出我正確的方向嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM