可执行的Jar文件

时间:2013-11-30 22:46:54

标签: java eclipse export

我知道这已经被问了很多,我已经尝试了20到30种不同的方法来自eclipse(Kepler,Ganymede,Galileo),fatJar,netbeans,blueJ,命令行和手册。

基本上,每次执行此操作时都会创建Jar文件(yay)。当我点击它时,它将启动游戏(耶!)。但是当我点击开始时,它会冻结(嘘!)。

我想也许这与资源阅读有关。但是,在开始屏幕(在可执行jar中工作)有一个资源背景,它读得很好。它没有产生任何错误(我可以告诉)。我似乎无法运行命令行。

我把代码放在gitHub上,但它会自动忽略我的bin文件夹(不确定这是否有问题)。我可能已经在Eclipse上尝试了每种可能的导出选项组合,但它始终存在同样的问题。

当然,和所有其他问题一样,当我点击运行时,它将从eclipse IDE运行,而不是从可执行文件中运行。

我遇到过一些人说要将资源文件夹移到src里面的一个包中。我还没有尝试过这种方法,因为必须能够将资源文件夹与src文件夹分开,我宁愿保持那种方式。

https://github.com/Gostdreamer/DragonBash/tree/master/MyGame

我如何访问资源的示例(如果您不想,您不必阅读我的所有代码)

InputStream in = getClass().getResourceAsStream("/Maps/level1-1Type.map");
BufferedReader br = new BufferedReader(new InputStreamReader(in));

tileset = ImageIO.read(getClass()
          .getResourceAsStream("/Tilesets/grasstileset4.gif"));

BufferedImage spritesheet = ImageIO.read(getClass()
              .getResourceAsStream("/Sprites/Player/playersprites.gif"));

该组织的一些屏幕截图:

enter image description here

enter image description here

I have tried with the jre library checked and unchecked

我已经尝试过检查和取消选中jre库

修改1 我发现自己错了。这是新的,这是来自使用Eclipse Keplar的fatJar编译并从命令提示符

运行它

http://www.codesend.com/view/13b1bbf472f10880992f6fd096eae24b/

使用codesend链接,以免陷入大量错误的StackOverflow

编辑2 enter image description here

.jar内部

1 个答案:

答案 0 :(得分:2)

修改

我明白了问题所在。

您正在错误地加载和/或打包资源,这就是它们出现在null的原因。

/与您的CLASSPATH相关,当您构建包含其中所有内容的单个可执行jar时,它就是jar的根。


旧答案:

要显示错误:

  1. 确保从命令提示符启动jar。

  2. 如果您的代码中有这样的内容,

    catch(Exception ex) {}
    
  3. 或任何其他抑制异常,删除它的内容,或者如果这似乎不可能,请将其更改为:

    catch(Exception ex) {
       ex.printStackTrace();
    }
    

    如果你有多个线程,你可能需要在线程的顶层捕获异常(主线程不需要这样做)。

    如果其他所有方法都失败了,请使用jstack