在while循环shell中运行Java

时间:2012-03-22 13:41:43

标签: java shell command-line batch-file

for /f "tokens=* delims= " %%a in (plugins.txt) do (
echo %%a
java -cp .;svnkit.jar Test %%a

cd %dotcms_home%

call ant deploy-plugins > test1.txt

FindStr "BUILD SUCCESSFUL" test1.txt

del "test1.txt"

cd C:\dotCMSResults
echo Errorlevel: %ERRORLEVEL%
if %ERRORLEVEL% ==1 (echo ^<tr BGCOLOR=\"#FF0000\"^>^<td^>Build^</td^>^<td^>Fout\!^</td^>^</tr^> >> goedje.html ) else (echo ^<tr BGCOLOR=\"#00FF00\"^>^<td^>Build^</td^>^<td^>Gelukt\!^</td^>^</tr^> >> goedje.html) 
cd %dotcms_home%
call ant undeploy-plugins > test.txt
)

您好,我想在while循环中在命令行中运行Java类。我在Google上搜索并找到了一种方法。但现在他只是第一次这样做,第二次和第三次他说:

Exception in thread "main" java.lang.NoClassDefFoundError: Test
Caused by: java.lang.ClassNotFoundException: Test
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: Test.  Program will exit.

我不知道为什么,特别是因为他第一次跑步是正确的。只有第二次和第三次他进入循环时他才会收到此错误。

1 个答案:

答案 0 :(得分:4)

这很可能是由于您的cd语句 - 您必须更改包含svnkit.jar(或Test.class?)的当前目录,以便它不能在第二个循环中再找到Test类。

要解决此问题,请在调用cd之前将java添加到正确的目录。

或者,更好的是,使用绝对路径作为java类路径参数,即

java -cp c:/folder1;c:/folder2/svnkit.jar