山pの楽しいお勉強生活

勉強の成果を垂れ流していきます

PowerShellでJava実行する際にシステムプロパティを設定する際の注意点

概要

f:id:yamap_55:20181108195116p:plain f:id:yamap_55:20181108195251p:plain

  • 正しく実行する際には java "-Dsystem.language=ja" Sample のようにダブルクォーテーションで囲う必要がある。 f:id:yamap_55:20181108195415p:plain

  • PowerShellは「-」の後に「.」が来ると区切りと判定するらしい

経緯とか

  • 日本語版Stack Overflowで質問発見
  • ↓のJavaコマンドを投げても正しく動かないらしい。
    • java -cp libtensorflow-1.11.0.jar;. -Djava.library.path=.\jni HelloTensorFlow
  • エラーメッセージを見るとクラスが正しく認識でされてないっぽいので、コマンドのどこかにスペース入ってるんじゃね?っと思ったら違うらしい。
    • エラーメッセージ : エラー: メイン・クラス.library.path=.\jniが見つからなかったかロードできませんでした
  • やり取りしていたら、PowerShell上ではオプションが正しく設定されないという事が発覚。
  • 調べてみたらPowerShellの仕様っぽい。

echoの例

  • 正常系1
PS C:\work\20181108> echo a b
a
b
  • 正常系2
PS C:\work\20181108> echo a.b
a.b
  • 想定外1
PS C:\work\20181108> echo -a.b
-a
.b
  • 想定外2

本題ではないですが、「,」を入れてみたら分割されました。

PS C:\work\20181108\j> echo a,b
a
b

参考URL