2017-10-31 3 views
0

新しいApache Commons Textの新しいランダムストリングジェネレータを使用しようとしていますが、インターネット上で適切にインポートする方法が見つかりません。 Mavenは正常にビルドされますが、私は、次のコマンドを使用して、コマンドラインからの私のjarファイルを実行しようとすると:私も、ビルド時にこの警告を持ってMavenがApacheを見つけられないRandomStringGenerator

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/text/RandomStringGenerator$Builder 
     at com.mycompany.app.App.main(App.java:8) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.text.RandomStringGenerator$Builder 
     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) 
     ... 1 more 

java -cp target/my-app-1.0.jar com.mycompany.app.App 

が、私は以下のエラーを取得します:

ここ
The POM for org.apache.commons:commons-text:jar:1.1 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more detail 

は、Mavenのデバッグバージョンです:

[WARNING] The POM for org.apache.commons:commons-text:jar:1.1 is invalid, transitive dependencies (if any) will not be available: 1 problem was encountered while building the effective model 
[FATAL] Non-parseable POM C:\Users\me\.m2\repository\org\apache\commons\commons-text\1.1\commons-text-1.1.pom: only whitespace content allowed before start tag and not a (position: START_DOCUMENT seen a... @1:1) @ line 1, column 1 
ここ

私App.javaコードされています。ここに私のpom.xmlである

package com.mycompany.app; 
import org.apache.commons.text.RandomStringGenerator; 
public class App 
{ 
    public static void main(String[] args) 
    { 
     // Generates a 20 code point string, using only the letters a-z 
     RandomStringGenerator generator = new RandomStringGenerator.Builder() 
      .withinRange('a', 'z').build(); 
     String randomLetters = generator.generate(20); 
     System.out.println(randomLetters); 
    } 
} 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>my-app</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0</version> 
    <name>my-app</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-text</artifactId> 
     <version>1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
</project> 

答えて

0

あなたはjarファイルからあなたのアプリケーションを実行したい場合は、爆発jarファイルが必要になります。デフォルトのクラスローダーは、あなたのjarファイルからApacheのjarファイルを探しません。

シェードプラグインを使用して、分解されたjarファイルを作成できます。あなたのポンに以下のようなものを追加してください。

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-shade-plugin</artifactId> 
       <version>3.0.0</version> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>shade</goal> 
         </goals> 
         <configuration> 
          <transformers> 
           <transformer 
             implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
            <manifestEntries> 
             <Main-Class>com.mycompany.app.App</Main-Class> 
            </manifestEntries> 
           </transformer> 
          </transformers> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

     </plugins> 
    </build> 

その後、あなたは次のように実行することができます。

のjava -jarターゲット/私のアプリ-1.0.jar

関連する問題