我刚开始使用Slick2D,并了解加载tilemap并显示它是多么简单。我尝试了来自众多示例的十几个不同的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;}
}
我试图看看是否有其他人有类似的问题,但没有发现任何事情。我能够加载其他文件,所以我不相信这是一个编译器问题。我的菜单类可以加载图像并显示它们。此外,文件路径是正确的。
如果您有任何可能帮我解决这个问题的提示,请告诉我。
答案 0 :(得分:1)
这看起来像是“找不到文件”的问题。它基本上说它无法找到您指定的文件(读取:“资源”)。检查您的相对路径data/maps/desert.tmx
并确保它正确。
如果这不起作用,请用绝对路径(来自文件系统的根目录)替换相对路径,仅用于测试,并查看是否有效。如果确实有效,那么你的相对路径应该有效,但是没有正确指定。我看到的一个最常见的问题是在查找资源时不会 up 几个文件夹。例如,您的正确相对路径可能是../../data/maps/desert.tmx
,也可能是这些路线上的某些路径。您需要确定您的代码在哪个文件夹中执行(可能是bin
文件夹?),并指定相对路径。