2009-02-22 2 views
0

Я пытаюсь скомпилировать this пример slick2d (первый), но я не могу заставить его работать. вот код:не может получить путь к классу

import org.newdawn.slick.AppGameContainer; 
import org.newdawn.slick.BasicGame; 
import org.newdawn.slick.GameContainer; 
import org.newdawn.slick.Graphics; 
import org.newdawn.slick.SlickException; 
/** 
* @author panos 
*/ 
public class WizardGame extends BasicGame 
{ 
    public WizardGame() 
    { 
     super("Wizard game"); 
    } 

    public static void main(String[] arguments) 
    { 
     try 
     { 
      AppGameContainer app = new AppGameContainer(new WizardGame()); 
      app.setDisplayMode(500, 400, false); 
      app.start(); 
     } 
     catch (SlickException e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    public void init(GameContainer container) throws SlickException 
    { 
    } 

    @Override 
    public void update(GameContainer container, int delta) throws SlickException 
    { 
    } 

    public void render(GameContainer container, Graphics g) throws SlickException 
    { 
    } 
} 

Я поставил lwjgl.jar, slick.jar и ibxm.jar в каталоге в соответствии с инструкциями. то я попытался:

javac -classpath.; полный путь \ slick.jar .; полный путь \ lwjgl.jar; полный путь \ ibxm.jar

затем

ява WizardGame

, но я получаю ошибки, что классы баночка не определены, а это значит, что-то должно быть неправильным, когда я устанавливаю к классам. Я не уверен, что я делаю неправильно.

я также пытался

Javac -classpath;.. \ Slick.jar;.. \ Lwjgl.jar;. \ Ibxm.jar

либо образом, следует не JVM найти о файлах .jar самостоятельно, если они находятся в том же каталоге, что и исходный код? в моем случае я установил 3 банки в том же каталоге, что и WizardGame.java. если я пытаюсь выполнить компиляцию без аргументов -classpath, это не сработает.

редактировать: я сделал, как указано, но теперь он не говорит мне «нет LWJGL в java.library.path»

я проверил мой lwjgl.jar с WinRAR и увидел, что она содержит две папки: мета-инф и org, а затем внутри org есть lwjgl. это должно быть так? потому что, если это так, я не знаю, что случилось.

редактировать 2: создал манифест с тем, что вы сказали, а затем использовали:

банка CFM test.jar manifest.txt

это создает файл банку, то я использовал

Java - jar test.jar

, а затем он сказал мне, что не нашел определения для класса WizardGame.

ответ

5

Вы должны добавить опцию -classpath к Java команды также. Не только для компилятора.

нравится:

javac -classpath .;lib\myjar.jar MyClass.java 

и затем

java -classpath .;lib\myjar.jar MyClass 

В противном случае интерпретатор (Java) не будет знать, где найти классы, необходимые.

4

Оскар взломан - вам нужен -classpath в команде java.

Еще одна вещь, на которую вы можете обратить внимание (это излишнее то, что вы делаете сейчас, но вы все равно должны сделать это для опыта) - создать файл JAR. В JAR-файле вы можете предоставить файл manifest.mf, который сообщает команде java, где найти другие файлы JAR, а также то, что является основным классом.

Вы бы затем запустить программу с помощью "Явы -jar foo.jar"

  • http://java.sun.com/docs/books/tutorial/deployment/jar/manifestindex.html
  • http://java.sun.com/docs/books/tutorial/deployment/jar/appman.html
  • http://java.sun.com/docs/books/tutorial/deployment/jar/downman.html

Я считаю, что следующий файл manifest.mz сделает то, что вы хотите (обратите внимание, что вы должны есть пустая строка в конце или он не будет работать):

 
Main-Class: WizardGame 
Class-Path: slick.jar lwjgl.jar ibxm.jar 

Это предполагает, что все файлы JAR (foo.jar, а другие три) находятся в том же каталоге.

+0

Возможно, как «расширенные темы», но стоит изучить это с начала – OscarRyz

+0

Для фактического распространения это лучший ответ. –

Смежные вопросы