2016-06-13 4 views
1

私はWindows用のCMDバッチスクリプトにJavaプログラムを開始ポートa simple shell scriptにしようとしています:を連結変数へのパスのリスト - に渡す「Javaの-classpath ...」CMDのバッチスクリプトで

@echo on 

set REPO="C:\Users\user1\.m2\repository" 
set VERSION=9.3.9.v20160517 

"C:\Program Files\Java\jdk1.8.0_66\bin\java.exe" -classpath C:\Users\user1\slova\WebSockets\target\classes;%REPO%\javax\servlet\javax.servlet-api\3.1.0\javax.servlet-api-3.1.0.jar;%REPO%\org\eclipse\jetty\websocket\websocket-server\%VERSION%\websocket-server-%VERSION%.jar;%REPO%\org\eclipse\jetty\websocket\websocket-common\%VERSION%\websocket-common-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-io\%VERSION%\jetty-io-%VERSION%.jar;%REPO%\org\eclipse\jetty\websocket\websocket-client\%VERSION%\websocket-client-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-servlet\%VERSION%\jetty-servlet-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-security\%VERSION%\jetty-security-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-server\%VERSION%\jetty-server-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-http\%VERSION%\jetty-http-%VERSION%.jar;%REPO%\org\eclipse\jetty\websocket\websocket-servlet\%VERSION%\websocket-servlet-%VERSION%.jar;%REPO%\org\eclipse\jetty\websocket\websocket-api\%VERSION%\websocket-api-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-util-ajax\%VERSION%\jetty-util-ajax-%VERSION%.jar;%REPO%\org\eclipse\jetty\jetty-util\%VERSION%\jetty-util-%VERSION%.jar;%REPO%\org\postgresql\postgresql\9.4.1208.jre7\postgresql-9.4.1208.jre7.jar de.afarber.websockets.MyHandler 

ご覧のとおり(上記のコードを右にスクロールすると)、java -classpath文字列に続くファイルパスのリストが長くなります。

パスをそれぞれ別々の行にリストしてから、そのリストをCMDシェルの手段で変数に連結することができますか(セミコロン;を間に追加します)?

私はより良い私のバッチファイルを維持することができそうすれば、最終的にはちょうど呼び出します(エディタで編集しやすい)をjava -classpath %CPATHS% de.afarber.websockets.MyHandler

UPDATE:すべてのJAR-のファイルが同じディレクトリに配置されることになる

場合私はthe new Java 8 wildcard syntaxjava -classpath "\that\dir\*" de.afarber.websockets.MyHandlerを使用していた可能性がありますが、ここには該当しませんでした。

答えて

1

あなたはこのフォームで変数を使用することができます。

set MYCLASSPATH=C:\Users\user1\slova\WebSockets\target\classes 
set MYCLASSPATH=%MYCLASSPATH%;%REPO%\javax\servlet\javax.servlet-api\3.1.0\javax.servlet-api-3.1.0.jar 
... 

"C:\Program Files\Java\jdk1.8.0_66\bin\java.exe" -classpath %MYCLASSPATH% ... 
+0

おかげで、それがうまくいきます!しかし、CMDには配列変数がありませんか?あるいは、いくつかの行を保持する変数(UnixシェルやPHP/PerlスクリプトのHERE割り当てなど)?読みやすさを向上させるには –

+1

@AlexanderFarberここを参照してください:http://stackoverflow.com/questions/17605767/create-list-or-arrays-in-windows-batch – Jens

+0

MYCLASSPATHと同じ変数へのパスを追加するトリックは実際にはとてもシンプルで良い、私は私のUnixシェルスクリプトでも使うことができます:-) –

関連する問題