2016-07-16 8 views
2

Ich erstellte ein Maven-Projekt und fügen Sie eine Abhängigkeit Apache commons-io in pom.xml Datei.Fehler beim Ausführen von Maven-Projekt java.lang.ClassNotFoundException: org.apache.commons.io.IOUtils

<dependency> 
    <groupId>commons-io</groupId> 
    <artifactId>commons-io</artifactId> 
    <version>2.4</version> 
</dependency>` 

Ich habe Abhängigkeit Common-io, so kann ich commons.io.IOUtils in meinem Projekt verwenden, um die Datei aus dem Ordner Ressource zu lesen. /src/main/resources/file/file.txt.

Alles funktioniert beim Kompilieren und Verpackung, aber wenn ich laufe das Glas

java -cp Ziel/Maven-1.0-SNAPSHOT.jar com.sample.exercise.Main

ich diesen Fehler

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils 
     at com.sample.exercise.Main.getFileWithUtil(Main.java:21) 
     at com.sample.exercise.Main.main(Main.java:13) 
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.IOUtils 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     ... 2 more 
` 

Hier ist mein Code

package com.sample.exercise; 

    import java.io.*; 
    import java.util.*; 
    import org.apache.commons.io.IOUtils; 

    public class Main{ 

     public static void main(String[] args) { 
      Main main = new Main(); 
      System.out.println(main.getFile("file/fileTable.txt")); 

     } 

     private String getFileString fileName) { 
      String result = ""; 
      ClassLoader classLoader = getClass().getClassLoader(); 
      try { 
      result =IOUtils.toString(classLoader.getResourceAsStream(fileName)); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return result; 
     } 
} 

Was das Problem ist. kannst du mir dabei helfen?

TIA

Antwort

0

Ändern der Abhängigkeit,

<dependency> 
    <groupId>org.apache.commons</groupId> 
    <artifactId>commons-io</artifactId> 
    <version>1.3.2</version> 
</dependency> 

Versuchen zu tun, Maven sauber, und Maven installieren, Maven-Befehle sind OS-spezifische, aber es ist das gleiche tut.

Versuchen hinzuzufügen, unten an deine pom.xml

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     <archive> 
     <manifest> 
      <mainClass>com.test.main</mainClass> // main being main.java which has my main method 
     </manifest> 
     </archive> 
    </configuration> 
    <executions> 
     <execution> 
     <id>make-assembly</id> <!-- this is used for inheritance merges --> 
     <phase>package</phase> <!-- bind to the packaging phase --> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

<sourceDirectory>src</sourceDirectory> 
    <resources> 
     <resource> 
     <directory>src</directory> 
     <excludes> 
      <exclude>**/*.java</exclude> 
     </excludes> 
     </resource> 
    </resources> 
+0

Ich habe es bereits geändert, aber immer noch den gleichen Fehler – ilovejavaAJ

+0

welche IDE verwenden Sie? – peaceUser

+0

Ich verwende keine IDE Ich benutze nur Texteditor (gedit), um das Programm zu programmieren. – ilovejavaAJ

0

Oder wie in der

<dependency> 
    <groupId>commons-io</groupId> 
    <artifactId>commons-io</artifactId> 
    <version>2.4</version> 
</dependency> 
https://mvnrepository.com/artifact/commons-io/commons-io/2.4

gegeben
+0

Ich habe es bereits geändert, aber immer noch den gleichen Fehler – ilovejavaAJ

+0

ausführen 'mvn Abhängigkeit: Baum', um zu sehen, ob diese commons-io Jar dort aufgeführt ist.Ich nicht, ich vermute, das Glas ist installiert in einem anderen Repository-Speicherort finden Sie in diesem Post, um zu sehen, wie Sie Ihren lokalen Repository-Speicherort überprüfen http://stackoverflow.com/questions/38382889/include-local-jar-file-in-maven-project-not-finding- file/38398701 # 38398701 oder alternativ können Sie Ihren maven-Befehl von der Befehlszeile selbst anstelle von IDE ausführen, da IDE eingebettete 'Maven' verwendet und der Repository-Speicherort anders ist. –

+0

Ich benutze keine IDE Ich benutze nur Texteditor zu Code und Terminal, um den Code auszuführen – ilovejavaAJ

0

Ich benutze keine IDE Ich verwende nur Texteditor (gedit) um das Programm zu programmieren.

In diesem Fall gehen müssen Sie die JAR-Dateien für alle Ihre Abhängigkeiten der Laufzeit Classpath hinzuzufügen; z.B.

$ java -classpath target/maven-1.0-SNAPSHOT.jar:path-to-commons-io-jar:... \ 
     com.sample.exercise.Main args 

Wenn Sie in einer IDE bauen/ausführen, die Maven versteht, wird es die Abhängigkeiten der Laufzeit-JAR für Sie automatisch hinzufügen. Wenn Sie über die Eingabeaufforderung ausgeführt werden, müssen Sie selbst damit umgehen ... oder schreiben Sie ein einfaches Wrapper-Skript, das dies tut. (Oder erstellen Sie ein "UberJAR", das alle Abhängigkeiten enthält ...)

+0

habe immer noch den gleichen Fehler Ich tat, was Sie sagten – ilovejavaAJ

+0

java -classpath target/mavenOne-1.0-SNAPSHOT.jar: Pfad-zu-Gemeingüter -io-jar: ... \ com.sample.exercise.Main args – ilovejavaAJ

+0

Ändern Sie "path-to-commons-io-jar" in den REAL-Pfad. (Duh!) –