Intellij Java 2016.2.2およびMavenを使用して、非常にシンプルなJavaコンソールアプリケーションを作成しています。
外部ライブラリを追加したいので、次のようにMavenに依存関係を追加します。
<dependency>
<groupId>jline</groupId>
<artifactId>jline</artifactId>
<version>2.12</version>
</dependency>
IDEで実行すると正常に機能しますが、外部コンソールでは機能しません(次のエラーが発生します:Java.lang.NoClassDefFoundError)。
チェックしたところ、何らかの理由で、生成したばかりのJARに外部JARが追加されていません。また、「ファイル->プロジェクト構造」で多くのことを試しましたが、それでも機能しません...
依存関係を含むJARを構築したいだけなので、次のコマンドを使用してコンソールでアプリケーションを実行できます。
Java -jar myproject.jar
どうやってやるの?ご協力いただきありがとうございます!
私はついにIntellij JavaでこのJARを生成することに成功しました。
[〜#〜]編集[〜#〜]
それを行うためのより良い(そしてより簡単な方法)は、pom.xmlファイルに次の行を追加することです:
<build>
<plugins>
<plugin>
<artifactId>maven-Assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>your.MainClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-Assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
次に、「clean」および「package」mavenコマンドを使用します。
上記の最後の3つの手順(MANIFEST.MFについて)は依然として必須のようです。
わかりましたので、基本的に、独自の依存関係をすべて含む(通常、依存関係は外部にある)「ファットjar」(Assemblyとも呼ばれます)を作成します。
そのためにはMavenプラグインを使用する必要があります。以下は、サンプルアセンブリプラグイン構成です jar-with-dependencies :
<project>
...
<build>
...
<plugins>
<plugin>
<artifactId>maven-Assembly-plugin</artifactId>
<version>2.6</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
...
</project>
次に、単に実行します
mvn package