所以,當我嘗試使用chromedriver從一個jar文件,我得到一個異常:ChromeDriver從IDE的作品,而不是從一個罐子
Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/chrome/ChromeDriver
at SelJarTest.main(SelJarTest.java:13)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.chrome.ChromeDriver
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)
然而,當我從IDE運行程序( IntelliJ CE),它工作得很好。
這裏是我的Maven依賴:
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.openqa.selenium.chrome.ChromeDriver</groupId>
<artifactId>selenium-java</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
而且我的代碼:
public class SelJarTest
{
private static final String WEB_DRIVER_PROP = "webdriver.chrome.driver");
public static void main(String[] args)
{
String oldProp = System.getProp(WEB_D_PROP);
System.setProp(WEB_DRIVER_PROP, "chromedriver" + File.seperator + "chromedriver.exe");
ChromeDriver cd = new ChromeDriver();
System.out.println("Enter stuff: ");
int userin;
Scanner scan = new Scanner(System.in);
while((userin = Integer.parseInt(scan.nextLine())) < 9)
{
if(userin %2 == 0)
cd.navigate().to("https://www.youtube.com");
}
scan.close();
cd.close();
System.clearProp(WEB_DRIVER_PROP);
if(oldProp != null)
System.setProp(WEB_DRIVER_PROP, oldProp);
System.out.println("Done.");
}
}
對於一個小更清晰,chromedriver.exe是一個叫chromedriver文件夾,這是在同一個目錄中作爲罐子:
DIR> chromedriver/chromedriver.exe
SelJarTest.jar
沒什麼,我在網上找到的似乎幫助解決這個問題。發現類似於錯誤的是一堆「哦,你需要這樣和那樣的依賴,或者這樣和那樣的文件。」我想避免使用環境變量,以便我的同事可以運行該程序,如果我將該文件放在服務器上供他們使用。
任何幫助,非常感謝。
你是如何從jar文件運行?你錯過了類路徑嗎?我你不使用Maven來運行測試(和它的正確配置),比如你定義你的依賴正在只加在「編譯」階段因而這是默認的依賴範圍HTTPS方式://maven.apache .ORG /引導/引入/引進到依賴-mechanism.html#Dependency_Scope – ITomas
我只是從CMD執行的jar:Java的罐子SelJarTest.jar – techset7set
的可能的複製[什麼是Java類路徑和路徑?](HTTP: //stackoverflow.com/questions/17409714/what-are-java-classpath-and-path) –