2012-07-09 3 views
0

Je suis nouveau avec l'exécution de Java à partir de la ligne de commande dans Windows et ne peut pas exécuter mon programme. Pour la vue d'ensemble, voici exactement ce que je suis en train de faire:NoClassDefFoundError lors de l'exécution de Java à partir de la ligne de commande Windows avec des fichiers jar externes

Exécuter deux fichiers .java, TestCase1.java et UniversalVariables.java
Incorporez plusieurs fichiers jar externes
Est-ce que tout cela à partir de la ligne de commande

TestCase1.java a tout le code de fonctionnement, alors qu'UniversalVariables.java a à peine quelques données, alors ne laissez pas tout ce qui s'y trouve vous confondre.

Il est à noter que j'utilise du sélénium et que je l'utilise dans Eclipse.

Voici TestCase1.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(); 
    } 
} 

Et voici UniversalVariables.java:

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

C'est ce que je mets dans la ligne de commande (Ce sont tous les fichiers jar que j'utilise.Je sais que ce n'est pas joli ... supporter avec moi.):

Cela compile bien. Je mets alors cela dans la ligne de commande:

>java NSSR.TestCase1 

Puis vient l'erreur:

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. 

Pour votre information, voici mon CLASSPATH.

; C: \ Program Files \ Java \ jre6 \ lib \ ext \ QTJava.zip; C: \ WINDOWS \ system32 \ java.exe \ lib; C: \ Program Files \ IBM \ RationalSDLC \ ClearQuest \ cqjni.jar; C: \ JAR * .jar

Toute aide est grandement appréciée!

Répondre

3

Vous devez également placer les jarres en tant que paramètre sur java, comme pour javac.

+0

Cela a fonctionné! Merci! – 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 

devrait faire ce que vous voulez. java doit également savoir où trouver les bibliothèques. Il n'est pas stocké dans les fichiers de classe référençant (et ne devrait pas, car il ne s'adapterait qu'à votre propre système)

+0

On dirait que les ordures vous ont battu au punch. Merci quand même! – jrad

+0

C'est la vie! :) – zpea

+0

Dans tous les cas, je pourrais ajouter que vous avez à peine besoin des bibliothèques que vous avez inclus dans le classpath. En outre, avant que votre base de test ne se développe, pensez à utiliser WebDriver (Selenium 2) à la place de l'ancien Selenium 1. L'option d'exportation de code dans Selenium IDE s'appelle "Junit (WebDriver)". Le code utilise beaucoup moins d'attente explicite et WebDriver est officiellement supporté par tous les grands constructeurs de navigateurs. – zpea

Questions connexes