1

いくつかのjarファイルを含むフォルダーがあります。他の場所にある別のjarファイルからこれらのjarファイルを参照しています。

私の問題は、このようにjarフォルダーのパスを指定するときC:\Trial Library\jar Folder\です。フォルダ名にスペースが含まれている場合 (Trial Library)、このフォルダを見つけることができません。

スペースなしで与えると、つまり正常にC:\Trial_Library\jar_Folder\動作します。

この問題をできるだけ早く修正するのを手伝ってください。

ここに私のバッチファイルがあります

set CURRENT_DIRECTORY=%~dp0

set ANT_HOME=%"CURRENT_DIRECTORY"%ant\apache-ant-1.8.3
ECHO current directory is %CURRENT_DIRECTORY%
ECHO %ANT_HOME%
set Path=%ANT_HOME%\bin
set ADAPTER_LIBRAY_PATH=%1
set USER_JAR_PATH=%2
set CLASS_NAME=%3
set RESULTS_PATH=%4
set JUNIT_PATH=%"CURRENT_DIRECTORY"%ANT\test\junit-4.1.jar
set LIBRAIES_TO_INCLUDE="%JUNIT_PATH%";"%ADAPTER_LIBRAY_PATH%";"%USER_JAR_PATH%"
ECHO %LIBRAIES_TO_INCLUDE%
ECHO %ADAPTER_LIBRAY_PATH%
ECHO %JUNIT_PATH%
ECHO %USER_JAR_PATH%
ECHO %CLASS_NAME%
ECHO %RESULTS_PATH% 

ant -lib "%LIBRAIES_TO_INCLUDE%" -Dlibraries="%ADAPTER_LIBRAY_PATH%" -Djunitlibrary="%JUNIT_PATH%" -Djartobeexec="%USER_JAR_PATH%" -Duserclass=%CLASS_NAME% -Dresultspath=%RESULTS_PATH% -buildfile build.xml test-html

ここで、バッチファイルに値を渡します

String[] commands=new String[5];
commands[0]="driver.bat";
commands[1]=finalLibraryPath;
commands[2]=executingJarLocation;
commands[3]=tempPackageName;
commands[4]=resultsFolderPath;
process = Runtime.getRuntime().exec(commands); 
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
StringBuffer errorStr = new StringBuffer(); 
String line;
while ((line = br.readLine()) != null) {
errorStr.append(line);
errorStr.append(System.getProperty("line.separator"));  

}

事前にサンクス

よろしく、 プラブー

4

3 に答える 3

1

さて、私が理解していることから、あなたは次のようなことをしていると「推測」しています

Runtime.exec("myBatchFile.bat " + path);

これは涙で終わります。これは、次のように言うのと同じです:

C:> myBatchFile.bat C:\Path to my jar files

これはうまくいきません。基本的に、バッチ ファイルには 1 つではなく 5 つのパラメーターがあると見なされるようになりました。

問題を解決するには、各コマンド/パラメーターを個別に渡す必要があります...

Runtime.exec(new String[] {"mybatchFile.bat", path});

または、さらに良いことに、使用しますProcessBuilder

ProcessBuilder pb = new ProcessBuilder("myBatchFile.bar", path);
于 2012-08-30T19:44:36.210 に答える
0

パスを引用符で囲みます。これは、コンピューターが文字どおりに受け取ることを意味します。メモ帳でも同様の問題が発生する可能性があり、拡張子を指定.txtしても最後に拡張子が追加されます。引用符で囲むと、この問題が解決します。

于 2012-08-30T06:56:02.650 に答える