我正在创建一个PageRank类,它依赖于我自己编写的一些线性代数运算。由于我无法学习JUnit测试,我决定为我的PageRank类编写自己的测试类。不幸的是,它并不像我预期的那么容易。这是我的基本想法:
的PageRank / PageRankTest.java:
package pagerank;
public class PageRankTester{
public static PageRank pagerank = new PageRank();
public static void main(String[] args){
testNorm();
testSubtract();
testDot();
testMatrixMul();
}
private static void testNorm(){
// Tests pagerank.norm()
}
private static void testSubtract(){
// Tests pagerank.subtract()
}
public static void testDot(){
// Tests pagerank.dot()
}
public static void testMatrixMul(){
// Tests pagerank.matrixMul()
}
}
的PageRank / PageRank.java:
package pagerank;
import java.util.*;
import java.io.*;
public class PageRank {
public PageRank( String filename ) {
}
/* --------------------------------------------- */
private double[] dot(double[] x, double[][] P){
//returns dot product between vector and matrix
return res;
}
private double[][] matrixMul(double x, double[][] J){
//returns x*J
return J;
}
private double[] subtract(double[] x, double[] y){
//returns elementwise x-y
return v;
}
private double norm(double[] x){
// returns euclidean norm of x
return norm;
}
public static void main( String[] args ) {
if ( args.length != 1 ) {
System.err.println( "Please give the name of the link file" );
}
else {
new PageRank( args[0] );
}
}
}
这会导致许多问题。
1:使用javac PageRankTester.java
编译测试类时出现以下错误:
$ javac PageRankTester.java
PageRankTester.java:4: error: cannot find symbol
public static PageRank pagerank = new PageRank();
^
symbol: class PageRank
location: class PageRankTester
PageRankTester.java:4: error: cannot find symbol
public static PageRank pagerank = new PageRank();
^
symbol: class PageRank
location: class PageRankTester
2 errors
我想当你把所有东西都放在一个你不需要导入的包中时?我唯一的结论是我正在编写错误的方法,因为我已经在包中工作,我不需要从另一个包中导入任何东西。
2:编译PageRank.java工作正常,但在尝试使用java PageRank
运行PageRank时,我得到:
$ java PageRank
Error: Could not find or load main class PageRank
Caused by: java.lang.NoClassDefFoundError: pagerank/PageRank (wrong name: PageRank)
我已尝试java -cp . PageRank
,以防止此错误,但没有成功。
在这里实现我想要的正确方法是什么?
答案 0 :(得分:0)
您在编译时遇到问题,请开始使用ide eclipse或intelij Idea。
PageRank类无法编译
另一个问题出在您的包裹名称中,请尝试:
java pagerank.PageRank
因此,如果你要创建一个像这样的文件夹结构:
src/
pagerank/
PageRank.java
PageRankTester.java
<强> PageRank.java 强>
package pagerank;
public class PageRank {
public PageRank(String filename) {}
public static void main(String[] args) {
if (args.length != 1) {
System.err.println("Please give the name of the link file");
} else {
new PageRank(args[0]);
}
}
}
<强> PageRankTester.java 强>
package pagerank;
public class PageRankTester{
public static PageRank pagerank = new PageRank("filename");
public static void main(String[] args){
testNorm();
testSubtract();
testDot();
testMatrixMul();
}
private static void testNorm(){
// Tests pagerank.norm()
}
private static void testSubtract(){
// Tests pagerank.subtract()
}
public static void testDot(){
// Tests pagerank.dot()
}
public static void testMatrixMul(){
// Tests pagerank.matrixMul()
}
}
在cmd cd中进入src文件夹并执行:
javac pagerank/*.java
java pagerank.PageRank
java pagerank.PageRankTester