Запуск Java-программы - PullRequest
       22

Запуск Java-программы

3 голосов
/ 18 сентября 2009

Я посмотрел на некоторые другие вопросы 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 определены в банке. Как мне рассказать 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 ]

3 голосов
/ 18 сентября 2009

Ты бежишь

javac -classpath .:OthelloLib.jar Main.java

для компиляции, затем

java -classpath .:OthelloLib.jar Main

В каждом случае опция -classpath .:OthelloLib.jar сообщает Java, где найти SimplePlayer и другие необходимые вам классы; он не знает, чтобы посмотреть в JAR-файл самостоятельно. И вам нужно указать компилятору и виртуальной машине, где искать классы.

РЕДАКТИРОВАТЬ : Похоже, вы добавили что-то о TimeoutException с тех пор, как я написал это ... вы не забыли скомпилировать TimeoutException.java? И находится ли файл TimeoutException.class в том же каталоге, что и Main.class?

2 голосов
/ 18 сентября 2009

Вы установили ссылку на OthelloLib.jar или вызываете javacompiler с библиотекой в ​​качестве параметра?

java -classpath .:OthelloLib.jar -g Main
2 голосов
/ 18 сентября 2009

Примечание. Все это можно сделать в хорошей среде IDE, например eclipse или netbeans, добавив библиотеку в свой проект. Остальное обрабатывается автоматически.

1 голос
/ 18 сентября 2009

Вы импортировали все библиотеки?

как

import a.b.c. OthelloPlayer;
0 голосов
/ 18 сентября 2009

Вы указали classpath при вызове вашей программы?

Может работать что-то вроде следующего:

java -cp .:OthelloLib.jar Main
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...