|
Windows上でパスの値を引用するとき、
Windowsが引用符で囲まれた値を解体して解釈してしまうという問題がありますので覚えておいてください。
通常は引用符で囲まれた値の中で、トレーリング・バックスラッシュを除き、
全てのバックスラッシュ('\')を通常どおりに取り扱います。下記の例を見てみると、
トレーリング・バックスラッシュが引用符をエスケープしており、結果として、
意図としない引数が、Wrapperへ引き渡されています。
| 問題の例: |
wrapper.exe -c ..\conf\wrapper.conf "wrapper.working.dir=C:\" wrapper.debug=TRUE"
|
本来この意図とするオペレーションは、
引数(
[-c]、
[..\conf\wrapper.conf]、
[wrapper.working.dir=C:\]、
[wrapper.debug=TRUE]
)を用いてWrapperを呼び出すことです。
しかし、実際に起きていることは、2つ目の引用符がエスケープとして解釈されてしまい、
結果として、それに続く3つ目と4つ目の引数が結合されてしまい、
[wrapper.working.dir=C:" wrapper.debug=TRUE]となっています。
まず簡単な解決策としては、トレーリング・バックスラッシュを使わない、ということです。
しかしながら、今回の例「C:\」では、それは不可能です。
従って、他の解決策としては、バックスラッシュの後に、トレーリング・ピリオドを追加する、ということです。
つまり、「C:\.」の明記は、
「C:\」ディレクトリーと同じ意味になりますが、
Windowsによっては、正しく解釈されます。
| 改善策の例: |
wrapper.exe -c ..\conf\wrapper.conf "wrapper.working.dir=C:\." wrapper.debug=TRUE"
|
|