将Java项目导出到Jar时出现问题

将Java项目导出到Jar时出现问题,java,eclipse,slick2d,Java,Eclipse,Slick2d,因此,我一直在使用Slick2D制作一种LoZ衍生游戏,以更好地使用Java,我想我现在应该知道如何导出它,以便在不同的机器上测试它 我现在遇到的问题是,一旦我导出了我的整个项目,双击所创建的。我的意思是,屏幕的大小、位置和一切都是正确的,但不是任何图形显示,它只是一个白色的屏幕。我在这里尝试过一些答案,比如使用胖罐子导出器,但都不起作用 可能是因为我没有使用正确的设置之类的吗?我用于将图片导入Tile类的代码如下: public static BufferedImage background,

因此,我一直在使用Slick2D制作一种LoZ衍生游戏,以更好地使用Java,我想我现在应该知道如何导出它,以便在不同的机器上测试它

我现在遇到的问题是,一旦我导出了我的整个项目,双击所创建的。我的意思是,屏幕的大小、位置和一切都是正确的,但不是任何图形显示,它只是一个白色的屏幕。我在这里尝试过一些答案,比如使用胖罐子导出器,但都不起作用

可能是因为我没有使用正确的设置之类的吗?我用于将图片导入Tile类的代码如下:

public static BufferedImage background, terrain, items, characters;

public Tile()
{
    try {
        /*Tile.background = ImageIO.read(getClass().getResource("res/bg.png"));*/
        Tile.background = ImageIO.read(Tile.class.getResourceAsStream("/bg.png"));
        //Tile.terrain = ImageIO.read(new File("res/terrain.png"));
        Tile.characters = ImageIO.read(Tile.class.getResourceAsStream("/characters.png"));
        //Tile.items = ImageIO.read(new File("res/items.png"));
    } catch (IOException e) {
        System.out.println("Error Loading Images");
    }
}
代码中注释掉的部分是我以前尝试过的,不包括Tile.terrain和Tile.background。我有一个res文件夹,作为构建路径上的源文件夹包含在项目属性中。res文件夹中有几个子文件夹(World、GUI和Sound)和几个文件(bg.png、characters.png)。以下是res文件夹作为Windows资源管理器中的文件路径的外观: C:\WorkArea\Java2D\res

有人知道该怎么做吗

更新#1 因此,在遵循您的建议之后,JB Nizet在运行jar之后,在我的命令提示符中出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/newdawn/slick/SlickException
    at org.rc.Core.start(Core.java:89)
    at org.rc.Core.main(Core.java:81)
Cause by: java.lang.ClassNotFoundException: org.newdawn.slick.SlickException
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPriveliged(Native Method)
    at java.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadCLass(Unknown Source)
    at java.lang.ClassLoader.loadClass(unknown Source)
    ... 2 more
更新#2 因此,我已经找到了如何将Slick和其他东西打包在一起(我使用JarSplice将它们全部拼接在一起),现在我遇到了一个与资源相关的错误:

Exception in thread "main" java.lang.RuntimeException: Resource not found: res/World/Level_1.tmx
    at org.newdawn.slick.util.ResourceLoader.getResourcAsStream(ResourceLoader.java:69)
    at org.newdawn.slick.tiled.TiledMap.<init>(TiledMap.java:106)
    at org.rc.Level<init>(Level.java:32)
    at org.rc.Core.start(Core.java:89)
    at org.rc.Core.main(Core.java:81)
线程“main”java.lang.RuntimeException中的异常:未找到资源:res/World/Level_1.tmx 位于org.newdawn.slick.util.ResourceLoader.getresourcarcstream(ResourceLoader.java:69) 在org.newdawn.slick.tiled.TiledMap.(TiledMap.java:106) 在org.rc.Level(Level.java:32) 位于org.rc.Core.start(Core.java:89) 位于org.rc.Core.main(Core.java:81) 这说明我没有正确地引入资源,即使在Eclipse中的project viewer中,我的res文件夹是构建路径上的源文件夹

有人知道该怎么做吗

我的回答 因此,我决定在NetBeans amnd上完成该项目。对于任何有我描述的问题的人,尝试一下


我的朋友,这很有帮助^^

不要双击罐子。使用
java-jaryourjar.jar
在shell中执行它。这样,您将看到潜在的错误消息和堆栈跟踪。请注意,捕获异常以注销无意义的错误消息会适得其反:您必须猜测问题是什么,而不是从异常类型中看到什么,消息和堆栈跟踪。@JBNizet我用命令提示符在遵循您的方法后给我的错误更新了我的问题。这意味着包含此文件的jar文件未列在可执行jar的清单中,或者它已列在清单中,但未出现在它应该出现的位置。阅读@JBNizet阅读您在此处发布的教程对我来说是更好,还是让我继续使用JarSplice,然后找出错误s