Javaで実行可能な単一ファイルソースコードを書く方法
JDK 11 以降、Java はクラス ファイルにコンパイルする必要なくソース ファイルを直接実行することをサポートしています。これにより、Python、Ruby、Node.js などの動的プログラミング言語で通常行われるように、Java でスクリプトを記述することが可能になります。この投稿は、それを実現する方法の例とクイック リファレンスとして役立ちます。
手順は簡単にまとめると次のようになります。
-
シェバンが次のように設定されていることを確認してください:
#!/usr/bin/env java --source 17
、--source
が重要であることに注意してください -
ソースコードファイルの最初のトップレベルクラスに実行入口として
psvm
メソッドが含まれていることを確認します。 -
ファイル名に
.java
拡張子が付いていないこと、およびchmod +x ./filename
でファイルが実行可能であることを確認します。
例
- 以下を
fib
という名前のファイルとして保存し、実行可能にします
#!/usr/bin/env java --source 17
public class Fib {
public static void main(String[] args) {
long num = Long.parseLong(args[0]);
System.out.println(fib(num));
}
private static long fib(long n) {
if (n < 2) return n;
return fib(n - 2) + fib(n - 1);
}
}
- コマンドラインから試す
~$ ./fib 10
55
注記
-
また、
java filename.java
のように、シェバン行#!/usr/bin/env java --source 17
を設定せずに実行することもできます。この場合、ファイルを実行可能に設定する必要はなく、ファイル名はソース コード ファイルの最初のトップレベル クラス名と一致する必要はありません (通常の Java コードのように)。ただし、.java
ファイル拡張子は必要です。 -
単一ファイルの実行可能ファイルが JDK 外部の外部依存関係を使用する場合は、
java -cp /path/to/3rd-party.jar filename.java
のように通常の-cp
パラメータを使用して渡すことができます。
参考文献