2016-12-16 3 views
0

Also, wenn ich versuche, eine chromedriver aus einer JAR-Datei zu verwenden, erhalte ich eine Ausnahme:ChromeDriver von IDE funktioniert, aber nicht aus dem Glas

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) 

Allerdings, wenn ich das Programm von einer IDE ausführen (IntelliJ CE), es funktioniert gut.

Hier ist meine Maven Abhängigkeiten:

 <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> 

Und mein Code:

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."); 
    } 
} 

Für ein wenig mehr Klarheit ist die chromedriver.exe in einem Ordner chromedriver genannt, die im selben Verzeichnis ist wie das Glas:

Nichts, was ich online gefunden habe, scheint zu helfen, dies zu lösen. Was gefunden hat, dass dem Fehler ähnlich war, war ein Bündel von "Oh, Sie brauchen solche und solche Abhängigkeit, oder solche und solche Datei." Ich möchte die Verwendung von Umgebungsvariablen vermeiden, so dass meine Mitarbeiter das Programm möglicherweise ausführen können, wenn ich die Datei auf einen Server lege, den sie verwenden können.

Jede Hilfe wird sehr geschätzt.

+0

Wie sind Sie mit der JAR-Datei? Vermissen Sie den Klassenpfad? Ich benutze nicht maven, um den Test zu starten (und es ist richtig konfiguriert), zum Beispiel die Art, wie Sie Ihre Abhängigkeiten definiert wurden nur der "Kompilierphase" hinzugefügt, dies ist der Standardabhängigkeiten Bereich https: //maven.apache .org/guides/einleitung/einleitung in abhängigkeitsmechanismus.html # Dependency_Scope – ITomas

+0

Ich habe gerade das jar von CMD ausgeführt: java -jar SelJarTest.jar – techset7set

+1

Mögliches Duplikat von [Was sind Java Klassenpfad und Pfad?] (http: //stackoverflow.com/questions/17409714/what-are-java-classpath-and-path) –

Antwort

-1

Ich fand eine Lösung für meine Notlage laufen. Ich habe die JAR-Datei nicht mit allem erstellt, was ich brauchte.

Ich verwende IntelliJ als meine IDE, und ich hätte das Jar-Artefakt aus Modulen mit Abhängigkeiten erstellen sollen. Projektstruktur> Artfacts> Hinzufügen> JAR> von Modulen mit Abhängigkeiten ...

Meine Abhängigkeiten endete als:

<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

Versuchen Sie, die Selen Zugabe Abhängigkeiten der folgenden

<scope>test</scope> 

und verwenden Sie die folgenden Tests

mvn Test

+0

Der Build schlägt fehl: [FEHLER] Fehler beim Ausführen des Ziels im Projekt SeleniumJarTest: Abhängigkeiten für das Projekt konnten nicht aufgelöst werden SeleniumJarTest: SeleniumJarTest: jar: 1.0: Konnte Artefakt nicht finden org.openqa.selenium.chrome.ChromeDriver: selen-java: jar: 3.0.1 in der Mitte (https://repo.maven.apache.org/maven2) -> [Hilfe 1] – techset7set

+0

Denken Sie müssen die Chrome-Treiberabhängigkeit ersetzen mit dem in: http://search.maven.org/#artifactdetails%7Corg.seleniumhq.selenium%7Cselenium-chrome-driver%7C3.0.1%7Cjar – ITomas

Verwandte Themen