2012-07-09 4 views
0

Windows에서 명령 줄에서 Java를 실행할 때 새로운 기능이며 프로그램을 실행할 수 없습니다. 여기, 개요 것은 내가 할 노력하고 있어요 정확히 무엇 : 여러 외부 jar 파일
명령 줄에서이 모든 작업을 수행 통합NoClassDefFoundError Windows jar 파일에서 외부 jar 파일로 Java를 실행할 때

실행이 개 된 .java 파일, TestCase1.java 및 UniversalVariables.java

TestCase1.java에는 작동하는 코드가 모두 있지만, UniversalVariables.java에는 데이터가 거의 들어 있기 때문에 혼란스러워하지 마십시오.

셀레늄을 사용하고 Eclipse를 통해 실행한다는 점에 유의해야합니다.

package NSSR; 

import java.util.*; 

public class UniversalVariables { 

    public static String baseAddress = "******"; 
    public static String loginPage = "******"; 
    public static String username = "******"; 
    public static String password = "******"; 
    public static ArrayList<String> NSSR_Titles = new ArrayList<String>(NSSR_Titles()); 
    public static String Requestor = "******"; 
    public static String reqDept = "Shared Services"; 
    public static ArrayList<String> NSSR_Descriptions = new ArrayList<String>(NSSR_Descriptions()); 
    public static ArrayList<String> NSSR_Dates = new ArrayList<String>(NSSR_Dates()); 
    public static Random randy = new Random(); 
    public static int num; 

    public static String getRandomTitle() { 
     num = randy.nextInt(NSSR_Titles.size()); 
     return NSSR_Titles.get(num); 
    } 

    public static String getRandomDescription() { 
     num = randy.nextInt(NSSR_Descriptions.size()); 
     return NSSR_Descriptions.get(num); 
    } 

    public static String getRandomDate() { 
     num = randy.nextInt(NSSR_Dates.size()); 
     return NSSR_Dates.get(num); 
    } 

    public static ArrayList<String> NSSR_Titles() { 
     ArrayList<String> list = new ArrayList<String>(); 
     for(int i = 1; i < 11; i++) 
      list.add("Title " + i); 
     return list; 
    } 

    public static ArrayList<String> NSSR_Descriptions() { 
     ArrayList<String> list = new ArrayList<String>(); 
     for(int i = 1; i < 11; i++) 
      list.add("Description " + i); 
     return list; 
    } 

    public static ArrayList<String> NSSR_Dates() { 
     ArrayList<String> list = new ArrayList<String>(); 
     for(int i = 1; i < 13; i++) 
      for(int j = 1; j < 29; j++) 
       for(int k = 13; k < 100; k++) { 
        String str = i + "/" + j + "/20" + k; 
        list.add(str); 
       } 
     return list; 
    } 
} 

이 내가 (명령 행에 이러한 모든를 넣어 것입니다 : UniversalVariables.java

package NSSR; 

import com.thoughtworks.selenium.*;<br> 
import org.junit.After;<br> 
import org.junit.Before;<br> 
import org.junit.Test;<br> 

//Create new NSSR 

public class TestCase1 extends SeleneseTestCase { 

    public static void main(String[] args) { 
     TestCase1 tc1 = new TestCase1(); 
     try { 
      tc1.setUp(); 
      tc1.testTestCase1(); 
      tc1.tearDown(); 
     } catch (Exception e) { 

     } 
    } 

    @Before 
    public void setUp() throws Exception { 
     selenium = new DefaultSelenium("localhost", 4444, "*firefox", 
       UniversalVariables.baseAddress); 
     selenium.start(); 
    } 

    @Test 
    public void testTestCase1() throws Exception { 
     selenium.open(UniversalVariables.loginPage); 
     selenium.type("name=USERNAME", UniversalVariables.username); 
     selenium.type("name=PASSWORD", UniversalVariables.password); 
     selenium.click("link=Submit"); 
     selenium.waitForPageToLoad("60000"); 
     selenium.open("/itg/dashboard/app/portal/PageView.jsp?IS_WINDOID=N"); 
     selenium.click("link=Create"); 
     selenium.click("link=Request"); 
     selenium.waitForPageToLoad("30000"); 
     selenium.select("name=REQUEST_TYPE_CREATE", 
       "label=Non-Standard Service"); 
     selenium.click("css=span.secBtn > a"); 
     selenium.waitForPageToLoad("30000"); 
     String title = UniversalVariables.getRandomTitle(); 
     String req = UniversalVariables.Requestor; 
     String dept = UniversalVariables.reqDept; 
     String desc = UniversalVariables.getRandomDescription(); 
     String date = UniversalVariables.getRandomDate(); 
     System.out.println(title); 
     System.out.println(req); 
     System.out.println(dept); 
     System.out.println(desc); 
     System.out.println(date); 
     selenium.type("id=REQ.DESCRIPTION", title); 
     selenium.type("id=REQ.P.REQUESTORAC_TF", req); 
     selenium.select("id=REQ.P.REQUESTOR_DEPT", dept); 
     selenium.type("id=REQ.P.DETAIL_DESC", desc); 
     selenium.type("REQ.P.REQ_COMPL_DATE", date); 
     selenium.click("link=Submit"); 
     selenium.waitForPageToLoad("30000"); 
     selenium.refresh(); 
    } 

    @After 
    public void tearDown() throws Exception { 
     selenium.stop(); 
    } 
} 

을 그리고 여기에 있습니다 : 여기

은 TestCase1.java입니다 jar 파일을 사용하고 있습니다. 그다지 귀엽지는 않습니다 ... 나와 함께 감내하십시오.) :

>javac -classpath C:\JAR\junit-4.0.jar;C:\JAR\junit-4.0-src.jar;C:\JAR\selenium-java-c 
lient-driver.jar;C:\JAR\selenium-java-client-driver-sources.jar;C:\JAR\selenium- 
java-client-driver-tests.jar;C:\JAR\selenium-java-client-driver-test-sources.jar 
;C:\JAR\selenium-server.jar;C:\JAR\selenium-server-coreless.jar;C:\JAR\selenium- 
server-sources.jar;C:\JAR\selenium-server-standalone-2.24.1.jar; NSSR\TestCase1. 
java NSSR\UniversalVariables.java 

잘 컴파일됩니다.

>java NSSR.TestCase1 

그런 다음 오류 제공 : : 다음 명령 행에이를 넣어 참고

Exception in thread "main" java.lang.NoClassDefFoundError: com/thoughtworks/sele 
nium/SeleneseTestCase 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClassCond(Unknown Source) 
     at java.lang.ClassLoader.defineClass(Unknown Source) 
     at java.security.SecureClassLoader.defineClass(Unknown Source) 
     at java.net.URLClassLoader.defineClass(Unknown Source) 
     at java.net.URLClassLoader.access$000(Unknown Source) 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     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) 
Caused by: java.lang.ClassNotFoundException: com.thoughtworks.selenium.SeleneseT 
estCase 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     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) 
     ... 12 more 
Could not find the main class: NSSR.TestCase1. Program will exit. 

를이 내 CLASSPATH이다.

; C : \ 프로그램 파일 \ 자바 C : ₩ JRE * .jar

도움을 주시면 대단히 감사하겠습니다!

답변

3

javac에 전달한 것과 마찬가지로 항아리를 java의 매개 변수로 넣어야합니다.

+0

이렇게했습니다. 감사! – jrad

0
java -classpath "C:\JAR\junit-4.0.jar;C:\JAR\junit-4.0-src.jar;C:\JAR\selenium-java-client-driver.jar;C:\JAR\selenium-java-client-driver-sources.jar;C:\JAR\selenium-java-client-driver-tests.jar;C:\JAR\selenium-java-client-driver-test-sources.jar;C:\JAR\selenium-server.jar;C\JAR\selenium-server-coreless.jar;C:\JAR\selenium-server-sources.jar;C:\JAR\selenium-server-standalone-2.24.1.jar" NSSR.TestCase1 

은 원하는대로해야합니다. java도 라이브러리를 찾을 위치를 알아야합니다. 그것은 참조하는 클래스 파일에 저장되지 않습니다. (자신의 시스템에만 맞기 때문에)

+0

쓰레기가 펀치를 때리는 것 같습니다. 그래도 고마워! – jrad

+0

C'est la vie! :) – zpea

+0

어쨌든 클래스 패스에 포함 된 libs가 거의 필요 없다고 덧붙일 수 있습니다. 또한, 테스트 기반이 커지기 전에 이전 Selenium 1 대신 WebDriver (일명 Selenium 2)를 사용하는 것이 좋습니다. Selenium IDE의 코드 내보내기 옵션은 궁금한 경우를 대비해 "Junit (WebDriver)"라고합니다. 이 코드는 훨씬 덜 명시적인 대기를 사용하며 WebDriver는 공식적으로 모든 대형 브라우저 제조업체에서 지원합니다. – zpea

관련 문제