質問するログイン新規登録

回答編集履歴

1

executable jarの作り方を追記

2020/11/24 12:16

投稿

gpsoft
gpsoft

スコア1323

answer CHANGED
@@ -7,4 +7,54 @@
7
7
  コマンドプロンプトに、どんなコマンドを打ちましたか?
8
8
 
9
9
  jarファイルを解凍する方法を知ってますか?
10
- もし知ってるなら、適当なフォルダに解凍して、その中に含まれる`MANIFEST.MF`というファイルの内容を教えてください。
10
+ もし知ってるなら、適当なフォルダに解凍して、その中に含まれる`MANIFEST.MF`というファイルの内容を教えてください。
11
+
12
+ ### 2020-11-24追記
13
+ `java -jar hoge.jar`で実行するためには、`hoge.jar`の中に、`henkan.App`だけでなく、すべての依存ライブラリのクラスファイルが含まれている必要があります(いわゆるexecutable jar)。
14
+ おそらく、`mvn package`で作ったjarファイルには、`henkan.App`のクラスファイルだけが入ってるのではないでしょうか(`jar tvf hoge.jar`すればわかりますよね)。その場合、実行時には、依存ライブラリへのクラスパスを指定する必要があります。
15
+
16
+ 以下の方法でexecutable jarを作れると思うので、お試しください(これがオーソドックスな方法かどうかは分かりませんが)。
17
+
18
+ (1)`pom.xml`に以下のプラグインを追加
19
+
20
+ ```xml
21
+ <plugin>
22
+ <groupId>org.apache.maven.plugins</groupId>
23
+ <artifactId>maven-assembly-plugin</artifactId>
24
+ <version>2.3</version>
25
+ <configuration>
26
+ <archive>
27
+ <manifest>
28
+ <mainClass>
29
+ henkan.App
30
+ </mainClass>
31
+ </manifest>
32
+ </archive>
33
+ <descriptorRefs>
34
+ <descriptorRef>with-dependencies</descriptorRef>
35
+ </descriptorRefs>
36
+ </configuration>
37
+ <executions>
38
+ <execution>
39
+ <phase>package</phase>
40
+ <goals>
41
+ <goal>single</goal>
42
+ </goals>
43
+ </execution>
44
+ </executions>
45
+ </plugin>
46
+ ```
47
+
48
+ (2)ターミナルで以下のコマンドを実行
49
+
50
+ ```
51
+ $ mvn clean compile assembly:single
52
+ ```
53
+
54
+ これで、`target`ディレクトリの下に`xxxxx-with-dependencies.jar`ができると思います。
55
+
56
+ (3)実行する
57
+
58
+ ```
59
+ $ java -jar target/xxxxx-with-dependencies.jar
60
+ ```