运行Java程序

时间:2009-09-18 03:46:33

标签: java

我查看了其他一些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();
  }
}

5 个答案:

答案 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