2012-08-01 61 views
1

我想使用randoop(用於Java自動測試發生器)和randoop無法找到我的課:Java類路徑錯誤,無法找到我的課

[email protected]:~/Desktop$ java -ea -classpath \ 
randoop.1.3.2.jar:home/eliezer/myclasses \ 
randoop.main.Main gentests \ 
--testclass=/home/eliezer/Desktop/myclasses/ArrayListError 

policy = [email protected] 
Throwable thrown while handling command:java.lang.Error:\ 
classForName(/home/eliezer/Desktop/myclasses/ArrayListError) 
java.lang.Error: classForName(/home/eliezer/Desktop/myclasses/ArrayListError) 
at randoop.util.Reflection.classForName(Reflection.java:206) 
at randoop.util.Reflection.loadClassesFromList(Reflection.java:386) 
at randoop.main.GenInputsAbstract.findClassesFromArgs(GenInputsAbstract.java:507) 
at randoop.main.GenTests.handle(GenTests.java:184) 
at randoop.main.Main.nonStaticMain(Main.java:80) 
at randoop.main.Main.main(Main.java:42) 
Caused by: java.lang.ClassNotFoundException: \ 
/home/eliezer/Desktop/myclasses/ArrayListError 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:186) 
at randoop.util.Reflection.classForName(Reflection.java:198) 
... 5 more 
Randoop failed. 
Last sequence under execution:null 

我的類被稱爲ArrayListError.java和/home/eliezer/Desktop/myclasses被發現。

randoop文檔位於:https://randoop.github.io/randoop/manual/index.html

我相信這是非常平凡的事情,但我對這些事情沒有經驗。

+0

'home.eliezer.Desktop.myclasses'是你的包或目錄結構嗎? – 2012-08-01 13:39:25

+0

@Rp它的目錄結構 - 我只測試一個類,它在/ home/eliezer/myclasses中,它的名字是ArrayListError.java – 2012-08-01 13:42:23

+0

那麼你需要設置classpath爲'home/eliezer/Desktop/myclasses'( '你的類路徑中缺少'Desktop'),你需要調用'classForName(「ArrayListError」);' – 2012-08-01 13:45:42

回答

2

您需要設置CLASSPATH這樣,JVM應該能夠找到像類,文件,罐等
在你的情況你所有的資源,ArrayListError被放置在目錄/home/eliezer/Desktop/myclasses。你需要把它放在你的類路徑中。 一旦您將類路徑指向提及的目錄,您需要將類名稱傳遞給--testclass=ArrayListError

java -ea -classpath randoop.1.3.2.jar:/home/eliezer/Desktop/myclasses randoop.main.Main gentests --testclass=ArrayListError

應該解決您的問題。我建議你在設置classpath上進行搜索並閱讀。

+0

在你的迴應中提到--testclass的變化 - 這非常相關。很好的接收。 – 2012-08-01 17:40:46

0

這是錯誤的

我的類被稱爲ArrayListError.java和 /家庭/埃利澤/桌面/ myclasses被發現。

您的ArrayListError.java是源代碼,但java虛擬機需要在其類路徑中編譯的類。

編輯: 既然你說你有.class文件還,那麼你的問題可以從兩個方面

一個來解決。沒有包

運行命令(照顧--testclas的,它不是目錄,它應該是類)

的java -ea -classpath randoop.1.3.2.jar:/家/ eliezer/myclasses randoop.main.Main gentests --testclass = ArrayListError

b。類包

如果您ArrayListError確實有package com.test;建立一個目錄/ COM /測試你的myclasses目錄並運行以下

的java -ea命令-classpath randoop.1.3.2。罐子:/家庭/埃利澤/ myclasses/COM /測試/ randoop.main.Main gentests --testclass = com.test.ArrayListError

+0

我已經將ArrayListError編譯爲ArrayListError.class ... – 2012-08-01 13:45:48

+0

我不認爲我需要創建一個jar文件 – 2012-08-01 13:52:05

+0

您不需要創建jar,只要在* compiled *包的根目錄下層次結構位於您的類路徑中。 – 2012-08-01 13:53:24

0

檢查您在命令行上的類路徑; 我看到home/eliezer/myclasses,沒有領先的/

+0

我已添加/但仍然得到相同的錯誤 – 2012-08-01 14:02:44

+0

並且您已將Desktop添加到路徑中?這一點都有點令人困惑。 – 2012-08-01 14:06:54

+0

eliezer @ ubuntu:〜/ Desktop $ java -ea -classpath randoop.1.3.2.jar:/ home/eliezer/Desktop/myclasses randoop.main.Main gentests --testclass =/home/eliezer/Desktop/myclasses/ArrayListError – 2012-08-01 14:10:19

相關問題