我想編譯我的項目,它使用Gradle和Maven。該項目在我的本地maven存儲庫上使用另一個庫。Gradle和Maven編譯我的項目,但我得到NoClassFoundError
搖籃:該庫在搖籃和Maven參考
dependencies{
compile 'cf.charly1811.java.utils:MimeType:1.0'
}
Maven的:
<!-- Dependencies -->
<dependencies>
<dependency>
<groupId>cf.charly1811.java.utils</groupId>
<artifactId>MimeType</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
當我嘗試使用mvn clean package
或gradle clean jar
它成功編譯項目。錯誤發生時的MimeType類被稱爲:
Exception in thread "Thread-4" java.lang.NoClassDefFoundError: cf/charly1811/java/utils/MimeType at cf.charly1811.java.web.RequestHandlerThread.process(RequestHandlerThread.java:120)
at cf.charly1811.java.web.RequestHandlerThread.handleRequest(RequestHandlerThread.java:85)
at cf.charly1811.java.web.RequestHandlerThread.run(RequestHandlerThread.java:64)
Caused by: java.lang.ClassNotFoundException: cf.charly1811.java.utils.MimeType
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 3 more
我不知道是什麼造成這個錯誤... 請幫助。
編輯: Mime類型的pom.xml:
<project>
<modelVersion>4.0.0</modelVersion>
<name>MimeType</name>
<description>Library to easily get the type of a file</description>
<groupId>cf.charly1811.java.utils</groupId>
<artifactId>MimeType</artifactId>
<version>1.0</version>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
<comments>A business-friendly OSS license</comments>
</license>
</licenses>
</project>
的HttpServer(主要項目)的pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<name>HttpServer</name>
<description>A simple HTTP Server written in JAVA</description>
<groupId>cf.charly1811.java.web</groupId>
<artifactId>HttpServer</artifactId>
<version>1.0</version>
<!-- Dependencies -->
<dependencies>
<dependency>
<groupId>cf.charly1811.java.utils</groupId>
<artifactId>MimeType</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<!-- License -->
<licenses>
<license>
<name>Private use</name>
<url>http://choosealicense.com/licenses/no-license/</url>
<comments>This Software is for private use Only</comments>
</license>
</licenses>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>cf.charly1811.java.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
編輯 我忘了澄清1兩件事: 我用的IntelliJ IDEA。當我嘗試使用「運行」來編譯項目時,它會編譯所有內容,我不會收到此錯誤。它只發生在我使用Gradle或Maven編譯項目時
請刪除你的清單文件並執行maven clean install。 很確定這個包沒有被導入到您的清單中。如果這個問題仍然存在,那麼手動導入這個軟件包,並調查爲什麼它不能自動導入。 – StackFlowed 2014-09-10 13:16:40
我刪除了我的Manifest文件,重新編譯了MimeType庫並重新編譯了我的主項目。仍然得到相同的錯誤。我已經手動導入MimeTYpe庫並再次嘗試,現在它正在工作。也許問題來自MimeType pom文件?我用圖書館的pom文件和項目更新了這個問題 – 2014-09-10 13:46:08
不,我認爲可能是構建中的問題刪除你的本地回購。從工作空間中刪除項目...再次檢查並構建它。如果問題仍然存在,那麼您需要進一步調查。您是否在使用清單導入時出現奇怪的常規中使用此導入。 – StackFlowed 2014-09-10 13:50:03