• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Selenium Java - niezrozumiały błąd

0 głosów
563 wizyt
pytanie zadane 9 czerwca 2020 w C i C++ przez TomekN Początkujący (330 p.)

Cześć,
Napisałem prosty skrypt:
Ma on po prostu otworzyć przeglądarkę i wejść na stronę googla

package wp;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class PG1 {
	public static void main(String args[]) {
		System.setProperty("webdriver.gecko.driver", "C:\\Users\\Tomek\\Desktop\\IT\\geckodriver\\geckodriver.exe");
		WebDriver driver = new FirefoxDriver();
		System.out.println("Zaczynamy");
	    driver.get("http://google.com");
	}
}



Wyskakuje mi błąd:
"Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/exec/Executor"
i nie mam pojęcia co jest źle. Pomożecie?

 

komentarz 9 czerwca 2020 przez Wiciorny Ekspert (282,350 p.)
zmień kategorię na java

3 odpowiedzi

+2 głosów
odpowiedź 9 czerwca 2020 przez p099 Mądrala (6,390 p.)
Błąd masz podany na tacy, jest nim informacja o wyjątku
0 głosów
odpowiedź 9 czerwca 2020 przez mbabane Szeryf (79,260 p.)
Spróbuj dodać do projektu bibliotekę Apache Commons.
0 głosów
odpowiedź 9 czerwca 2020 przez Wiciorny Ekspert (282,350 p.)
brakuje Ci biblioteki, lub importu
"Exception in thread "main" java.lang.NoClassDefFoundError:"
NoClassDefFoundError: - brakuje Ci definicji tej klasy z biblioteki, albo import nie działa albo go nie dołączyłes.
komentarz 9 czerwca 2020 przez TomekN Początkujący (330 p.)
Wiem, że brakuje mi jakiegoś importu - tylko nie wiem jakiego

dodałem import org.apache.commons.*;

ale to nie pomaga
komentarz 9 czerwca 2020 przez mbabane Szeryf (79,260 p.)

WebDriver gdzieś pod spodem korzysta z:

org.apache.commons.exec.Executor.

http://commons.apache.org/proper/commons-exec/apidocs/org/apache/commons/exec/Executor.html

https://mvnrepository.com/artifact/org.apache.commons/commons-exec

W momencie uruchomienia programu nie ma tej klasy na classpath. Nazwa sugeruje, że klasa pochodzi z biblioteki Apache Commons. Prawdopodobnie z jakiejś przyczyny nie zostaje ona dołączana podczas uruchomiania aplikacji. Pytanie jak uruchamiasz ten program i jak dołączasz bibliotekę Apache Commons? (ewentualnie dołączyłeś ją w wersji niekompatybilnej z wersją Selenium). 

NoClassDefFoundError jest tylko nazwą błędu rzucaną przez JVM, nie jest to klasa której brakuje. import w tym przypadku nie pomoże.

komentarz 9 czerwca 2020 przez TomekN Początkujący (330 p.)

Jak widzisz, oznaczenie eclipse mówi, że import is never used.

komentarz 9 czerwca 2020 przez TomekN Początkujący (330 p.)
a wywala błąd, że go nie ma.

Pełen tekst błędu z konsoli;

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/exec/DaemonExecutor
    at org.openqa.selenium.os.OsProcess.<init>(OsProcess.java:54)
    at org.openqa.selenium.os.CommandLine.<init>(CommandLine.java:38)
    at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:183)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:79)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:147)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:125)
    at wp.PG1.main(PG1.java:10)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.exec.DaemonExecutor
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    ... 10 more
komentarz 9 czerwca 2020 przez mbabane Szeryf (79,260 p.)

Jeśli używasz maven to pokaz sekcje depenencies. Jeśli nie to sprawdź w internecie jak załączyć dodatkowego jara (w tym przypadku jara z apache-commons-exec) do uruchamiania aplikacji w Eclipse.

komentarz 9 czerwca 2020 przez TomekN Początkujący (330 p.)

Z tego co wyczytałem w necie jest w różnych wersjach plików jar w guava, które nie odpowiadają temu co jest w selenium.

W tym momencie wywala błąd:

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;)V
    at org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:146)
    at org.openqa.selenium.firefox.GeckoDriverService.access$000(GeckoDriverService.java:44)
    at org.openqa.selenium.firefox.GeckoDriverService$Builder.usingFirefoxBinary(GeckoDriverService.java:160)
    at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:187)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:147)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:125)
    at wp.PG1.main(PG1.java:8)

 

Biblioteki wyglądają jn.

komentarz 9 czerwca 2020 przez mbabane Szeryf (79,260 p.)
Lepiej będzie jeśli zrobisz nowy projekt mavenowy.

Podobne pytania

0 głosów
0 odpowiedzi 150 wizyt
pytanie zadane 22 czerwca 2022 w Java przez blofeld Użytkownik (700 p.)
0 głosów
1 odpowiedź 386 wizyt
pytanie zadane 9 czerwca 2020 w Java przez juz_nie_mlody Początkujący (470 p.)
0 głosów
1 odpowiedź 639 wizyt

93,604 zapytań

142,528 odpowiedzi

322,995 komentarzy

63,090 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...