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