0

この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

それから

java WizardGame

しかし、jarクラスが定義されていないというエラーが発生します。これは、クラスパスを設定しているときに何かが間違っている必要があることを意味します。何が間違っているのかわかりませんが。

私も試しました

javac-classpath。;。\slick.jar。;。\lwjgl.jar;。\ibxm.jar

いずれにせよ、jvmは、ソースコードと同じディレクトリにある場合、.jarファイル自体を検出するべきではありませんか?私の場合、WizardGame.javaと同じディレクトリに3つのjarを設定しました。-classpath引数なしでコンパイルしようとすると、機能しません。

編集:指示どおりに実行しましたが、「java.library.pathにlwjglがありません」と表示されます。

私はwinrarでlwjgl.jarを調べたところ、meta-infとorgの2つのフォルダーが含まれていることがわかりました。次に、org内にlwjglがあります。そんなはずなの?もしそうなら、私は何が悪いのかわからないからです。

編集2:あなたが言ったことでマニフェストを作成し、次に使用しました:

jar cfm test.jarmanifest.txt

これによりjarファイルが作成され、次に使用しました

java -jar test.jar

次に、WizardGameクラスの定義が見つからなかったと表示されました。

4

2 に答える 2

5

javaコマンドにも-classpathオプションを追加する必要があります。コンパイラだけではありません。

お気に入り:

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

その後

java -classpath .;lib\myjar.jar MyClass

そうしないと、インタプリタ(java)は必要なクラスを見つける場所を知りません。

于 2009-02-22T04:40:05.687 に答える
4

Oscarは大成功です-javaコマンドにも-classpathが必要です。

あなたが見ることができるもう一つのこと(あなたが今していることにはやり過ぎですが、それでも経験のためにそれをするべきです)はJARファイルを作成することです。JARファイルでは、他のJARファイルの場所とメインクラスをjavaコマンドに指示するmanifest.mfファイルを提供できます。

次に、「java-jarfoo.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.mファイルはあなたが望むことをするだろうと私は信じています(あなたは最後に空白行を持たなければならないことに注意してください、さもないとそれは機能しません):

メインクラス:WizardGame
クラスパス:slick.jar lwjgl.jar ibxm.jar

これは、すべてのJARファイル(foo.jarと他の3つ)が同じディレクトリにあることを前提としています。

于 2009-02-22T04:48:03.060 に答える