Reputation: 7826
I looked at some other SO questions, didn't find anything that solved my problem... I have a Main.java file (below) and a OthelloLib.jar file without associated source files.
Running javac Main.java
fails with
Main.java:8: cannot find symbol symbol : class SimplePlayer location: class Main OthelloPlayer p1 = new SimplePlayer();and a few more errors. SimplePlayer and BetterPlayer are defined in the jar. How do I tell java about this jar? This command:
javac -classpath .:OthelloLib.jar -g Main.java
doesn't cause an error, but I still don't know how to run the program. If I run java -classpath .:OthelloLib.jar Main
, java complains:
Exception in thread "main" java.lang.NoClassDefFoundError: TimeoutException
but TimeoutException.java is in the same directory as Main.java.
I don't know where to look up basic Java stuff like this, so here I am!
public class Main {
public Main() { }
public static void main(String[] args) {
OthelloPlayer p1 = new SimplePlayer();
OthelloPlayer p2 = new BetterPlayer();
OthelloObserver o = new OthelloSimObserver();
// Create an untimed game
OthelloGame g = new OthelloGame(p1, p2, o);
System.out.println("Starting game");
g.run();
}
}
Upvotes: 3
Views: 417
Reputation: 6879
Did you import all the libraries?
like
import a.b.c. OthelloPlayer;
Upvotes: 1
Reputation: 13044
Have you set a reference to OthelloLib.jar or invoking the javacompiler with the library as a parameter?
java -classpath .:OthelloLib.jar -g Main
Upvotes: 2
Reputation: 67892
Note: You can do all this within a good IDE like eclipse or netbeans by adding the library to your project. The rest gets handled automagically.
Upvotes: 2
Reputation: 10869
Did you specify the classpath when you call your program?
Something like the following might work:
java -cp .:OthelloLib.jar Main
Upvotes: 0
Reputation: 131780
You run
javac -classpath .:OthelloLib.jar Main.java
to compile, then
java -classpath .:OthelloLib.jar Main
In each case the -classpath .:OthelloLib.jar
option tells Java where to find SimplePlayer
and other classes you need; it doesn't know to look in the JAR file on its own. And you do need to tell both the compiler and the virtual machine where to look for the classes.
EDIT: Looks like you added something about TimeoutException
since I wrote this... did you remember to compile TimeoutException.java
? And is the TimeoutException.class
file in the same directory as Main.class
?
Upvotes: 3