我有一個run-tests.bat文件,如下所示(提供給我們)。這個bat文件與許多其他文件一起位於一個目錄中並被壓縮。它是一個獨立的testng目錄。除了這個文件,在目錄中subdirectorys的lib /和驅動器/和lib /的確有TestNG的:導航到bat(或任何)文件時的默認目錄
@ECHO [email protected] OFF
SET javacmd=
SET javacp=-classpath ".;lib/*"
SET jvmparams=-Dwebdriver.ie.driver="drivers/IEDriverServer.exe" - Dwebdriver.chrome.driver="drivers/chromedriver.exe"
IF "%JAVA_HOME%"=="" (
SET javacmd=java
) ELSE (
SET javacmd="%JAVA_HOME%\bin\java"
)
for /f tokens^=2-5^ delims^=.-_^" %%j in ('%javacmd% -fullversion 2^>^&1') do set "jver=%%j%%k%%l%%m"
IF %jver% LSS 17000 (
ECHO Java version is not supported. Please install Java 1.7 or greater.
GOTO RETURN
)
%javacmd% %javacp% %jvmparams% org.testng.TestNG testng.xml
:RETURN
IF -%1-==-- (
PAUSE
)
當我在我的機器上運行此,它工作正常。我需要將其複製到共享目錄,以便其他人可以運行它。我將它複製到一個共享目錄並進行測試,並且運行良好。我用文件瀏覽器導航,然後雙擊。
當我讓測試人員從他的機器上完成它時,cmd窗口就會出現並消失。我在裏面放了一些暫停,看看它失敗的地方。 %jver%是17045,所以它超過了這條線。它在%javacmd%命令失敗,並表示無法找到(或加載)org.testng.TESTNG。當我從我的機器上運行它而不是從他的機器運行時,它發現它很好。
我唯一的想法是,當我雙擊將.bat文件,不知何故它的CD我到正確的目錄,但保留他在他的目錄中,以便SET javacp = -classpath「 LIB/」 *設置lib/。在他自己的目錄中,而不是在解壓縮的目錄中。我試圖找出當你點擊一個.bat文件時,無論它是否將光盤放到一個目錄中,但找不到它。
那麼,我的理論爲什麼它不正確,還是有其他原因,我沒有看到?我驗證了我的DOS版本和他是一樣的,6.1.7601,我們使用的是Windows 7都和他有Java 7中