2016-12-16 26 views
0

所以,當我嘗試使用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 

沒什麼,我在網上找到的似乎幫助解決這個問題。發現類似於錯誤的是一堆「哦,你需要這樣和那樣的依賴,或者這樣和那樣的文件。」我想避免使用環境變量,以便我的同事可以運行該程序,如果我將該文件放在服務器上供他們使用。

任何幫助,非常感謝。

+0

你是如何從jar文件運行?你錯過了類路徑嗎?我你不使用Maven來運行測試(和它的正確配置),比如你定義你的依賴正在只加在「編譯」階段因而這是默認的依賴範圍HTTPS方式://maven.apache .ORG /引導/引入/引進到依賴-mechanism.html#Dependency_Scope – ITomas

+0

我只是從CMD執行的jar:Java的罐子SelJarTest.jar – techset7set

+1

的可能的複製[什麼是Java類路徑和路徑?](HTTP: //stackoverflow.com/questions/17409714/what-are-java-classpath-and-path) –

回答

-1

我找到了解決我的困境。我沒有用我需要的一切創建jar文件。

我使用的IntelliJ作爲我的IDE,我就一直在創造從依賴模塊的JAR構件。 項目結構> Artfacts>添加>從依賴模塊JAR> ...

我的依賴結束了:

<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>2.26.0</version> 
    </dependency> 
</dependencies> 
0

嘗試增加了硒依賴性以下

<scope>test</scope> 

,並使用以下命令來運行測試

MVN測試

+0

構建失敗:[錯誤]未能就項目SeleniumJarTest執行目標:無法解析項目SeleniumJarTest依賴關係:SeleniumJarTest:罐子: 1.0:無法找到僞影org.openqa.selenium.chrome.ChromeDriver:硒-java的:罐:3.0.1在中部(https://repo.maven.apache.org/maven2) - > [幫助1] – techset7set

+0

思考您需要更換Chrome驅動程序依賴項與之一:http://search.maven.org/#artifactdetails%7Corg.seleniumhq.selenium%7Cselenium-chrome-driver%7C3.0.1%7Cjar – ITomas

相關問題