Запуск Java в оболочке цикла while - PullRequest
0 голосов
/ 22 марта 2012
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
)

Здравствуйте, я хочу запустить класс Java в командной строке в цикле while.Я искал в 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 Ответ

4 голосов
/ 22 марта 2012

Это, скорее всего, связано с вашими cd утверждениями - вы должны перейти из текущего каталога, который содержит svnkit.jar (или Test.class?), Чтобы он больше не мог найти класс Test в второй цикл.

Чтобы исправить это, добавьте cd в правильный каталог перед вызовом java.

Или, что лучше, использовать абсолютные пути в качестве аргумента пути к классу Java, т.е.

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

...