簡體   English   中英

我無法將圖像文件加載到JAR文件中

[英]I can't get an Image file to load inside the JAR file

那里可能有重復的副​​本,但是我似乎找不到一個可以解決我的問題的副本。

我的問題是我的3個圖像文件中的1個不會從已編譯的JAR文件內部加載。 我可以加載它的唯一方法是,如果圖像位於.jar文件之外。

我的3個圖像文件名:

Tiles.png <---One that only loads outside
Sheet.png
Level.png

SpriteSheet.java <----抓取Sprite並指定圖塊大小

public class SpriteSheet {
private BufferedImage image = null;
private BufferedImage[][] tiles = null;

public int tileSize = 0;

public SpriteSheet(String file, int tileSize) {
    this.tileSize = tileSize;
    try {
        InputStream url = SpriteSheet.class.getResourceAsStream(file);
        image = ImageIO.read(url);
    } catch (IOException e) {
        e.printStackTrace();
    }
    split();
}

Level.java <----加載關卡並繪制地圖。 加載其圖像就好了。

public class Level {
private Map map = null;
private ArrayList<Entity> entities = new ArrayList<Entity>();
private Player player = null;
private BufferedImage sourceImage = null;
private SpriteSheet sprites = null;

public Level(String file, Player player) {
    this.player = player;


    try {
        URL url = SpriteSheet.class.getResource(file);
        sourceImage = ImageIO.read(url);
    } catch (IOException e) {
        e.printStackTrace();
    }

    map = new Map(sourceImage, this.player);
    sprites = new SpriteSheet("/sheet.png", 8);
    entities.add(this.player);
}

Map.java <----這是主要問題所在。 不是在JAR中找到Tile.png,而是在外部。

public class Map {
private BufferedImage source = null;
private SpriteSheet sheet = null;
private Level level;

private Tile[][] tiles = null;
private int width = 0;
private int height = 0;

private Camera cam = null;
public int xOffset;
public int yOffset;

public Map(BufferedImage source, Entity cameraTarget) {
    cam = new Camera();
    cam.attach(cameraTarget);

    this.source = source;

    String is = ("/Tiles.png");     
    sheet = new SpriteSheet(is, 8);

    System.out.print(source +"");
    load();
}

和Gamescene.java <---加載其圖像就好了。

    public class GameScene extends Scene {
private Level level = null;
private Player player = null;

public GameScene() {
    player = new Player();
    level = new Level("/level.png", player);
}

如果需要,我可以給您更多代碼。

猜測。 您首先使用大寫字母縮寫,然后在代碼中使用小寫字母。 也許這就是問題所在,因為Java在內部區分大小寫,而Windows則不然(Linux再次如此)。 看情況的匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM