我正在尝试运行一个将使用两个类的类,这两个类位于同一个包和目录中,如下所示:我使用的是 jdk 1.7,并且还设置了 JAVA_HOME。
package cs.ai.assignment1;
/* class to be used in EightPuzzle*/
import java.util.*;
public class H1 {
int solve(int a[][]) {
return 1;
}
}
package cs.ai.assignment1;
/* EightPuzzle class to store problem to be solved*/
import java.util.*;
import mtech.cs.ai.assignment1.*;
public class EightPuzzle {
int tiles[][];
EightPuzzle() {
// tiles is initilized to 0 here
}
void input() {
//input is taken from user and stored in tiles
}
public static void main(String[] args) {
int opt = 0;
Scanner in = new Scanner(System.in);
EightPuzzle puzzle = new EightPuzzle();
do {
System.out.println("**************Welcome to 8Puzzle Game****************\n");
System.out.println("\nChoose Heuristic Function to use");
System.out.println("\n1. #Displaced Tiles");
System.out.println("\n2. Manhattan Distance");
System.out.println("\nOption: ");
opt = in.nextInt();
if (opt == 2 || opt == 1) {
puzzle.input();
break;
}
} while (true);
int steps = 0;
H1 h1 = new H1();
H2 h2 = new H2();
switch (opt) {
case 1:
steps = h1.solve(puzzle.tiles);
break;
case 2:
steps = h2.solve(puzzle.tiles); // To solve the puzzle
break;
default:
break;
};
System.out.println("\n\nThe goal was reached in " + steps + " steps");
}
}
所有这些类都在同一个目录和包中。他们也被编译使用,
C700-Notebook-PC:~/aiAssgnmt$ javac -d . EightPuzzle.java H1.java H2.java
但是,当我尝试运行它们时,出现以下错误,
C700-Notebook-PC:~/aiAssgnmt$ java EightPuzzle.java
Error: Could not find or load main class EightPuzzle.java
因此,我尝试将它们全部放入 jdk/bin 并编译,但随后出现此错误,
ambarish@ambarish-Compaq-Presario-C700-Notebook-PC:~/Softwares/jdk1.7.0_25/bin$ java EightPuzzle
Exception in thread "main" java.lang.NoClassDefFoundError: EightPuzzle (wrong name: mtech/cs/ai/assignment1/EightPuzzle)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
我不知道为什么会这样,这是我的 JAVA_HOME,
C700-Notebook-PC:~/Softwares/jdk1.7.0_25/bin$ echo $JAVA_HOME
/home/ambarish/Softwares/jdk1.7.0_25
请在这方面提供帮助。