Java 无法获得正确的类路径
我试着先编译一个slick2d示例,但我无法让它工作。代码如下:Java 无法获得正确的类路径,java,jar,classpath,Java,Jar,Classpath,我试着先编译一个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
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奇才游戏
但是我得到的错误是没有定义jar类,这意味着在设置类路径时一定是出了问题。但我不确定我做错了什么
我也试过了
javac-classpath\滑头,罐子\lwjgl.jar\ibxm.jar
无论如何,如果.jar文件与源代码位于同一目录中,jvm不应该自己发现它们吗?在我的例子中,我已经在WizardGame.java的同一目录中设置了3个JAR。但是,如果我尝试在没有-classpath参数的情况下编译,它将无法工作
编辑:
我按照指示做了,但现在它告诉我java.library.path中没有lwjgl
我用winrar检查了我的lwjgl.jar,发现它包含两个文件夹:meta inf和org,然后在org内部有lwjgl。应该是这样吗?因为如果是的话,我不知道怎么了
编辑2:
根据您所说的内容创建清单,然后使用:
jar cfm test.jar manifest.txt
这创建了一个jar文件,然后我使用
java-jartest.jar
然后它告诉我它没有找到类WizardGame的定义。您还必须在java命令中添加-classpath选项。不仅仅是编译器
比如:
javac -classpath .;lib\myjar.jar MyClass.java
然后
java -classpath .;lib\myjar.jar MyClass
否则,java解释器将不知道在哪里找到所需的类 Oscar非常棒——您也需要在java命令上使用-classpath 另一件你可以看到的事情是,对于你现在正在做的事情来说,你做得太过分了,但是你仍然应该做的是创建一个JAR文件。在JAR文件中,您可以提供manifest.mf文件,该文件告诉java命令在哪里可以找到其他JAR文件以及主类是什么 然后通过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文件可以满足您的要求。请注意,您必须在末尾有一个空行,否则它将无法工作: Main-Class: WizardGame Class-Path: slick.jar lwjgl.jar ibxm.jar
这假设所有JAR文件foo.JAR和其他三个文件都在同一个目录中。可能是高级主题,但值得学习,因为对于实际分发,这是更好的答案。