こぼれネット

MATSim example-project を CUI で動かす手順メモ

■背景

『行政府が提供するアプリを使うと、下手なウィルスより、酷い結果が待っている』 『メインのPCには絶対にインストールしないこと』

■目的
\\wsl$\Ubuntu\home\tomoi\matsim-example-project でMATSimが動くかの確認したい

以下は、**「CUIでMATSim example-project を確実に動かす」**ところまでの手順を、今回あなたが辿った順番に沿って、抜け漏れが出ないようにメモ化したものです(ファイル改変は不要、pom.xmlも触らない前提).


MATSim example-project を CUI で動かす手順メモ

0. 前提


1. example project の取得

cd ~
git clone https://github.com/matsim-org/matsim-example-project.git
cd matsim-example-project

2. Maven の導入

(未導入なら)

sudo apt update
sudo apt install maven

3. まずビルド(jar を作る)

mvn clean package

3.1 ビルド時の典型的な失敗と原因

今回出たエラー:

Fatal error compiling: error: release version 21 not supported

4. Java/JDK 状況の確認(重要)

以下で状況が分かる.

java -version
javac -version
mvn -version

今回の状態:


5. JDK 21 を入れて javac を用意する(ビルド失敗の決定打)

sudo apt update
sudo apt install openjdk-21-jdk

導入後の確認:

javac -version
# 期待:javac 21.0.xx

(念のため)

mvn -version
# 出力に "Java version: 21..." が出ていればOK

6. ビルドし直し

cd ~/matsim-example-project
mvn clean package

ここで jar が生成される:


7. java -jar ... が動かない理由(重要)

java -jar target/matsim-example-project-0.0.1-SNAPSHOT.jar をすると:

no main manifest attribute

これは「jarのMANIFESTにMain-Classが入っていない」ためで、この jar は java -jar 実行用ではない
(異常ではなく、そういう作りの jar)

→ 実行は Maven(exec)で mainClass を指定して行うのが基本.


8. 実行に使える main クラスを調べる

main(public static void main)があるクラスを探す:

grep -R "public static void main" -n src/main/java

今回出た候補(例):

CUIで回す入口としては org.matsim.project.RunMatsim を使うのが素直.


9. CUIでMATSimを実行する(ここがゴール)

9.1 config を指定して実行

(今回の例:equil3)

mvn -Dexec.mainClass=org.matsim.project.RunMatsim \
    -Dexec.args="scenarios/equil3/config-test1.xml" \
    exec:java

これで MATSim が実行される.

9.2 実行結果の見え方

実行が通ると最後に概ねこう出る:

[INFO] BUILD SUCCESS
[INFO] Total time: ...

終了間際に以下の警告が出る場合がある:

NOTE: 2 thread(s) did not finish despite being asked to via interruption.

10. 「成功したか分からない」時の確認方法

MATSim は結果を 出力ディレクトリにファイルとして生成するので、以下で確認する。

10.1 output ディレクトリを探す

find . -maxdepth 3 -type d -name "output*"

10.2 出力の中身を見る

(例:./scenarios/equil3/output ができていた場合)

ls -la scenarios/equil3/output

典型的に生成されるファイル例:

これらが出ていれば シミュレーション成功と判断してよい.


補足:GUIが起動しても Start で落ちる件(今回の背景整理)

→ そのため現状は CUI実行が最も確実(今回のゴール).


まとめ(このメモの到達点)


GUIの再構築はあとでやる、とする

 

 

モバイルバージョンを終了