我查看了其他一些SO问题,没有找到解决我问题的任何问题......我有一个Main.java文件(下面)和一个没有相关源文件的OthelloLib.jar文件。
正在运行javac Main.java
失败
Main.java:8: cannot find symbol symbol : class SimplePlayer location: class Main OthelloPlayer p1 = new SimplePlayer();还有一些错误。 SimplePlayer和BetterPlayer在jar中定义。我怎么告诉java这个罐子?此命令:
javac -classpath .:OthelloLib.jar -g Main.java
不会导致错误,但我仍然不知道如何运行该程序。如果我运行java -classpath .:OthelloLib.jar Main
,java会抱怨:
Exception in thread "main" java.lang.NoClassDefFoundError: TimeoutException
但TimeoutException.java与Main.java位于同一目录中。
我不知道在哪里查找像这样的基本Java内容,所以我在这里!
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();
}
}
答案 0 :(得分:3)
你跑
javac -classpath .:OthelloLib.jar Main.java
编译,然后
java -classpath .:OthelloLib.jar Main
在每种情况下,-classpath .:OthelloLib.jar
选项告诉Java在哪里找到SimplePlayer
以及您需要的其他类;它不知道自己查看JAR文件。而且你需要告诉编译器和虚拟机在哪里查找类。
编辑:看起来你添加了关于TimeoutException
的内容,因为我写了这个...你还记得编译TimeoutException.java
吗? TimeoutException.class
文件与Main.class
位于同一目录中吗?
答案 1 :(得分:2)
注意:您可以通过将库添加到项目中,在eclipse或netbeans等良好的IDE中完成所有这些操作。其余的自动处理。
答案 2 :(得分:2)
您是否设置了对OthelloLib.jar的引用或使用库作为参数调用javacompiler?
java -classpath .:OthelloLib.jar -g Main
答案 3 :(得分:1)
您导入了所有库吗?
像
import a.b.c. OthelloPlayer;
答案 4 :(得分:0)
您在调用程序时是否指定了类路径?
以下内容可能有效:
java -cp .:OthelloLib.jar Main