NoClassDefFoundError当从Windows命令行运行Java与外部jar文件
我是新的从Windows命令行运行Java并不能让我的程序运行。概述,这里正是我试图做的事:NoClassDefFoundError当从Windows命令行运行Java与外部jar文件
运行两个.java文件,TestCase1.java和UniversalVariables.java
包含多个外部JAR文件
做到这一切的命令行
TestCase1.java具有所有功能代码,而UniversalVariables.java几乎只包含一些数据,所以不要让所有内容混淆。
应该指出,我使用Selenium并通过Eclipse运行它。
这里是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();
}
}
这里是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;
}
}
这是我投入命令行(这些都是的我使用的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:\ 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
任何帮助,非常感谢!
您还需要将罐子作为参数放置到java
,与您通过javac
时相同。
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
也需要知道在哪里可以找到这些库。它不存储在引用类文件中(不应该,因为它只适合您自己的系统)
看起来像垃圾打败你。虽然谢谢! – jrad 2012-07-09 15:35:05
C'est la vie! :) – zpea 2012-07-09 15:38:44
在任何情况下,我可能会补充说,您几乎不需要任何包含在类路径中的库。此外,在您的测试基础增长之前,请考虑使用WebDriver(又名Selenium 2)而不是旧的Selenium 1. Selenium IDE中的代码导出选项称为“Junit(WebDriver)”,以防万一您想知道。该代码使用了更少的显式等待,WebDriver得到了所有大型浏览器制造商的正式支持。 – zpea 2012-07-09 15:43:47
工作正常!谢谢! – jrad 2012-07-09 15:25:49