naichi's lab

3日後の自分(他人)への書き置き

Macで洋裁CADを動かす方法

はじめに

最近犬の服を作り始めました。

本をみながら型紙写して、サイズ調整して、って手書きでやったんですけどはちゃめちゃに面倒。

サイズ調整を満足いくまで繰り返し行いたいので、早めにCADに切り替えたいなとソフトを探してみました。

そしたら洋裁CADというツールがフリーだしなかなか良さそう。

Macで動かすのにちょっと苦労したので記録を兼ねて書いておきます。

(結果的に動いた)環境

  • Mac Book Pro 2018
  • Mac OS Mojave
  • java 15.0.1 2020-10-20

やったこと

洋裁CADのダウンロード

公式サイトよりダウンロードし、ZIPを解凍。

フォルダ名だけリネームしてアプリケーションフォルダに配置

/Applications/洋裁CAD

に置きました。

実行してみる -> エラー

/Applications/洋裁CAD/lib/P2dCad.jar

をダブルクリックで実行してみると、エラーダイアログが表示されるものの詳細はコンソールをみてねとしか書かれていない。

試しにターミナルで

$ cd /Applications/洋裁CAD/lib
$ java -jar P2dCad.jar

としてみたところ以下のエラーが表示されました。

$ java -jar P2dCad.jar
エラー: メイン・クラスtomojavalib.p2cad.mainstage.MainStageを検出およびロードできませんでした
原因: java.lang.NoClassDefFoundError: javafx/application/Application

なるほど、何も分からん。

Discordで質問してみた

洋裁CADのコミュニティで質問してみたところ、作者様からJDKにJavaFXが入ってないんじゃ無いか?とのヒントをいただけました。

よくよくさっきのエラーメッセージ読んでみるとたしかにそんなような例外出てますね・・・。

Java、全然分からんけど新しいの入れときゃいいのかな?と思い、上記記事を参考にJava15 + JavaFx15を入れてみることに。

全然話逸れるけどJavaってどれが新しいのか全然分からんくないですか・・・?色々ありすぎてつらい。

Java15を入れる

MacのBrewで複数バージョンのJavaを利用する + jEnv - Qiita

こちらを参考にJava15を入れました。

$ brew tap homebrew/cask-versions
$ brew cask install oracle-jdk

環境変数とパスもセットしておきます。

export JAVA_HOME=`/usr/libexec/java_home -v "15"`
PATH=${JAVA_HOME}/bin:${PATH}

java15になってることを確認

$ java -version
java version "15.0.1" 2020-10-20
Java(TM) SE Runtime Environment (build 15.0.1+9-18)
Java HotSpot(TM) 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing)

JavaFx15を入れる

Java11でJavaFXを動かす - Qiita

この辺りの記事が参考になりました。

JavaFX

上記から JavaFX Mac OS X SDK 15.0.1 をダウンロードし、解凍後に /Library/Java/JavaVirtualMachines/ へ配置

PATH_TO_FXという環境変数をセットしておく

export PATH_TO_FX=/Library/Java/JavaVirtualMachines/javafx-sdk-15.0.1/lib

コマンドで実行してみる

cd /Applications/洋裁CAD/lib
java --module-path $PATH_TO_FX --add-modules=javafx.web -jar P2dCad.jar

起動した!

f:id:naichilab:20201116003034p:plain

一度起動した後は、jarファイルをダブルクリックするだけでも起動するようになってました。

終わりに

作者様が迅速にヒントくださったおかげでなんとか起動することができました。

一通りの機能がMacでも問題なく動くといいな〜。

機械設計CADはやってましたが洋裁CADははじめてなので楽しみです。

チュートリアルやってからのんびり覚えたいと思います。

2021-03-22 追記

印刷実行を押すと下記エラーが出るようになっていた。

Exception in thread "JavaFX Application Thread" java.lang.NoClassDefFoundError: javafx/embed/swing/JFXPanel
    at tomojavalib.p2cad.subframe.PrintSelectFrameFx.a(Unknown Source)
    at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
 〜以下30行ぐらいエラー

javafx/embed/swing/JFXPanelについて調べると、javafx.embed.swingパッケージに入っているようだ。

JFXPanel (JavaFX 8)

起動コマンドを以下のように変更することで印刷できた。

java --module-path $PATH_TO_FX --add-modules=javafx.web,javafx.swing -jar P2dCad.jar

あと毎回コマンド実行するのも面倒なので、
以下の内容のシェルスクリプトを /Applications/洋裁CAD/洋裁CAD.sh に保存してちょっと楽になった。

cd /Applications/洋裁CAD/lib
java --module-path $PATH_TO_FX --add-modules=javafx.web,javafx.swing -jar P2dCad.jar