Java의 NoClassDefFoundError : com / google / common / base / Function
다음 코드를 사용할 때 :
public static void main(String[] args) {
try {
FirefoxDriver driver = new FirefoxDriver();
driver.get("http:www.yahoo.com");
} catch (NoClassDefFoundError ex) {
System.out.println("error: " + ex.getStackTrace());
}
}
다음과 같은 오류가 발생했습니다.
오류 : [Ljava.lang.StackTraceElement; @ 80f4cb
전형적인 "main"java.lang.NoClassDefFoundError의 예외 : com / google / common / base / Function
누군가가 해결책이나 이유를 찾도록 도와 줄 수 있습니까?
나는 같은 문제가 사라졌다 결국 selenium-server-standalone-version.jar 추가하는 것을 잊었다 . 클라이언트 jar 인 selenium-java-version.jar 만 추가되었습니다 .
도움이 되셨기를 바랍니다.
A NoClassDefFoundError
는 JRE가 클래스를 사용하지 않을 때 발생합니다. 의 경우에는 귀하 클래스 com.google.common.base.Function
경로에 추가하지 않은 클래스를 찾을 수 없습니다 .
편집하다
다음 라이브러리를 다운로드 한 후 :
- 셀레늄 : http://code.google.com/p/selenium/downloads/list
- 구아바 : http://code.google.com/p/guava-libraries/downloads/list
- Apache HttpComponents : http://hc.apache.org/downloads.cgi
- JSON jar : http://www.jarfinder.com/index.php/jars/versionInfo/21653
압축을 풀고 모든 JAR 파일을라는 폴더 lib
, 테스트 클래스 에 넣습니다 .
import org.openqa.selenium.firefox.FirefoxDriver;
public class Test {
public static void main(String[] args) {
try{
FirefoxDriver driver = new FirefoxDriver();
driver.get("http:www.yahoo.com");
} catch(Exception e){
e.printStackTrace();
}
}
}
아무 문제없이 달렸습니다.
다음과 같이 클래스를 사용할 수 있습니다.
# Linux 및 Mac에서 실행 및 실행 javac -cp. : lib / * Test.java 자바 -cp. : lib / * 테스트 # Windows에서 공격 및 실행javac -cp .; lib / * Test.java java -cp .; lib / * 테스트
같은 오류가 발생하고 조사 후 라이브러리 selenium-api 2.41.0에는 guava 15.0이 있지만 이전 버전으로 재정의 필요하고 pom.xml에 다음 구성을 추가하여 guava 15.0을 직접 선언했습니다.
<dependency>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
<type>jar</type>
<version>15.0</version>
</dependency>
클래스 경로 에 "google-collections" 라이브러리 가 없습니다 .
클래스 경로에 라이브러리를 추가 하는 방법 에는 여러 가지가 있으므로 프로그램 실행 방법에 대한 자세한 정보를 제공하십시오.
명령 줄에서 다음을 통해 클래스 경로에 라이브러리를 추가 할 수 있습니다.
java -classpath path/lib.jar ...
나를 위해 jar-selenium-java-2.45.0.jar을 선택하는 것 외에도 셀레늄 루트 폴더 아래의 "libs"폴더에있는 모든 jar를 선택해야합니다.
셀레늄 독립형 및 lib 폴더의 모든 jar 파일을 포함하면이 오류가 해결됩니다.
Google 코드를 가져 오려는 것 같습니다.
import com.google.common.base.Function;
그리고 그것은 클래스 Function을 찾는 것이 아닙니다. 필요한 모든 라이브러리가 빌드 경로에 있고 패키지를 올바르게 입력했는지 확인하십시오.
동일한 문제가 발생하여 'selenium-server-standalone-version.jar'을 설치 한 후에도 실패했습니다. guava 및 guava-gwt jar ( https://code.google.com/p/guava) 를 설치해야한다고 생각합니다. -libraries / )도 있습니다. 이 병을 모두 추가했고 마침내 내 PC에서 작동했습니다. 이 문제를 해결하는 다른 사람들에게도 효과가 있기를 바랍니다.
나는 같은 문제가 있었다. 내 프로젝트의 참조 라이브러리에 selenium-2.53.0 / selenium-java-2.53.0-srcs.jar 파일을 추가하는 것을 잊었습니다.
같은 오류가 발생했지만 INTELIJ를 사용하는 경우 셀레늄 라이브러리를 추가하면 해결되었습니다 (다시 추가하지 않은 경우).
project> projectStructure> Module> +> 셀레늄 jar를 추가합니다 (lib 폴더와 외부 모두에서).
eclipse와 같은 다른 IDE에서도 동일하게 수행해야합니다.
예외를 잡았을 때 java.lang.NoClassDefFoundError: com/google/common/base/Function
프로젝트 라이브러리의 오류로 인해 발생했습니다.
프로젝트 설정에서 확인하십시오. Intellij IDEA의 경우 파일-프로젝트 구조 로 이동하고 모듈 탭을 선택 합니다. 이 예외를 해결하기 위해해야 할 일은 셀레늄 라이브러리를 다시 추가하는 것뿐이었습니다.
"selenium-java-.zip"파일을 추출한 후에는 IDE에서 빌드 경로를 구성해야합니다. "lib"폴더 아래의 모든 jar 파일과 셀레늄 독립형 서버 및 Selenium Java 버전 jar 파일을 모두 가져옵니다.
IDE 등의 외부에서 간단한 수업을 시도하고 싶었습니다. 따라서 웹 사이트에서 셀레늄 zip을 다운로드하고 다음과 같이 클래스를 실행하십시오.
java -cp selenium-2.50.1/*:selenium-2.50.1/libs/*:. my/package/MyClass <params>
lib
대신 처음에 사용한 문제가 libs
있습니다. 나는 하지 않았다 셀레늄 독립 항아리를 추가해야합니다. 이것은 클래스 경로의 와일드 카드를 이해하는 Java 8입니다. 나는 자바 7도 할 것이라고 생각합니다.
나는 같은 문제가 있었고 마침내 selenium-server-standalone-version.jar을 추가하는 것을 잊었다는 것을 발견했습니다. 클라이언트 jar 인 selenium-java-version.jar 만 추가했습니다.
this is for chrome
System.setProperty("webdriver.chrome.driver","D:\\Testing_offical\\chromedriver.exe");
driver =new ChromeDriver();
this is for fire fox
System.setProperty("webdriver.gecko.driver",""D:\\Testing_offical\\geckodriver.exe"");
driver =new FirefoxDriver();
패턴 :
System.setProperty("webdriver.gecko.driver","**Path of the gecko driver** ");
여기에서 gecko를 다운로드하십시오 :-http: //docs.seleniumhq.org/download/
'ProgramingTip' 카테고리의 다른 글
Maven에서 생성 된 jar에서 리소스를 제외하는 방법은 무엇입니까? (0) | 2020.12.28 |
---|---|
byte []로 드로어 블 (0) | 2020.12.28 |
배경 이미지 위치 지정, 패딩 추가 (0) | 2020.12.28 |
Twitter Bootstrap 3에서 기본적으로 이미지가 반응하지 않습니다. (0) | 2020.12.28 |
Angular.js ng-repeat 필터는 여러 값 중 하나를 속성 (값의 OR) (0) | 2020.12.28 |