2016-07-16 22 views
2

mavenプロジェクトを作成し、pom.xml ファイルに依存関係のApacheコモンズを追加しました。mavenプロジェクトを実行しているときにエラーが発生しました。java.lang.ClassNotFoundException:org.apache.commons.io.IOUtils

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

私はそう、私はリソースフォルダからファイルを読むために私のプロジェクトでcommons.io.IOUtilsを使用できる共通-ioの依存関係を追加しました。 /src/main/resources/file/file.txt

すべてがコンパイルおよびパッケージングの際に動作しますが、私はこのエラー

を取得しています、私はjarファイルを実行する

のjava -cpターゲット/ Mavenの-1.0-SNAPSHOT.jarにcom.sample.exercise.Main

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 
` 

ここでの問題は何私のコード

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; 
     } 
} 

です。これで私を助けてくれますか? TIA

答えて

0

変更への依存性、実行する

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

てみてください、Mavenのきれいな、とMavenのインストール、Mavenのコマンドは、しかし、それは同じことを、OSが特定されています。

<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

私は既に変更しましたが、同じエラーが発生しました – ilovejavaAJ

+0

どのIDEを使用していますか? – peaceUser

+0

私はIDEを使用していませんプログラムを実行するためにコードとターミナルにtexteditor(gedit)を使用しています。 – ilovejavaAJ

0

それともhttps://mvnrepository.com/artifact/commons-io/commons-io/2.4

私はちょうどテキストエディタ(geditのを使用していIDEを使用していない
<dependency> 
    <groupId>commons-io</groupId> 
    <artifactId>commons-io</artifactId> 
    <version>2.4</version> 
</dependency> 
+0

私はすでにそれを変更しましたが、同じエラーを受けました – ilovejavaAJ

+0

'mvn dependency:tree'を実行してこのcommons-io jarがそこにリストされているかどうかを確認します。リポジトリの場所を確認することができます。http://stackoverflow.com/questions/38382889/include-local-jar-file-in-maven-project-not-finding- file/38398701#38398701あるいはIDEが組み込みの 'Maven'を使用し、リポジトリの場所が異なるため、コマンドラインからIDEの代わりにコマンドラインを実行することができます。 –

+0

私はIDEを使用していないImコードを実行するためにテキストエディタを使用し、コードを実行するための端末 – ilovejavaAJ

0

に与えられたとして、あなたのpom.xmlに以下の、追加してください)を実行してプログラムを実行します。その場合

、あなたはランタイムクラスパスへのあなたの依存関係のすべてのJARファイルを追加する必要があるとしています。例えば

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

Mavenを理解しているIDEでビルド/実行すると、ランタイムJARに自動的に依存関係が追加されます。コマンドプロンプトから実行するときは、自分で処理する必要があります。または、これを行う単純なラッパースクリプトを作成する必要があります。 (または、すべての依存関係を含む "uberJAR"を作成してください...)

+0

は同じエラーを返しました – ilovejavaAJ

+0

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

+0

"path-to-commons-io-jar"をREALパスに変更します。 (Duh!) –

関連する問題