我刚开始使用Slick2D,并了解了加载并显示它的简单性。我从众多示例中尝试了至少十二个不同的tmx文件,以查看是否是损坏的实际文件。每当我得到这个错误:

Exception in thread "main" java.lang.RuntimeException: Resource not found: data/maps/desert.tmx
    at org.newdawn.slick.util.ResourceLoader.getResourceAsStream(ResourceLoader.java:69)
    at org.newdawn.slick.tiled.TiledMap.<init>(TiledMap.java:101)
    at game.Game.init(Game.java:17)
    at game.Tunneler.initStatesList(Tunneler.java:37)
    at org.newdawn.slick.state.StateBasedGame.init(StateBasedGame.java:164)
    at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:390)
    at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:314)
    at game.Tunneler.main(Tunneler.java:29)


这是我的游戏课:

package game;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;
import org.newdawn.slick.tiled.TiledMap;

public class Game extends BasicGameState{
    private int stateID = -1;
    private TiledMap map = null;

    public Game(int stateID){
        this.stateID = stateID;
    }
    public void init(GameContainer container, StateBasedGame game) throws SlickException{
        map = new TiledMap("data/maps/desert.tmx","maps");//ERROR
    }
    public void render(GameContainer container, StateBasedGame game, Graphics g) throws SlickException{
        //map.render(0,0);
    }
    public void update(GameContainer container, StateBasedGame game, int delta) throws SlickException{
    }

    public int getID(){return stateID;}
}


我试过看看是否还有其他人遇到过类似的问题,但还没有发现任何问题。我能够加载其他文件,所以我不认为这是编译器问题。我的菜单类可以加载图像并显示它们。此外,文件路径是正确的。

请告诉我您是否有任何指针可以帮助我解决这一问题。

最佳答案

这看起来像“找不到文件”的问题。基本上是说找不到您指定的文件(读取:“资源”)。检查您的相对路径data/maps/desert.tmx,并确保它是正确的。

如果这不起作用,则将绝对路径替换为相对路径(从文件系统的根目录开始),以进行测试,然后看看是否可行。如果可以,那么您的相对路径应该可以,但是没有正确指定。我看到的最常见的问题之一是在查找资源时没有几个文件夹。例如,对于您来说正确的相对路径可能是../../data/maps/desert.tmx,或者沿这些方向的东西。您需要确定要在哪个文件夹中执行代码(也许是bin文件夹?),并从此处指定相对路径。

09-28 02:08