LibGDX打包.tmx地图

时间:2012-09-26 03:56:52

标签: java libgdx

我正在尝试通过命令行打包我的.tmx地图,但我一直这样:

Could not find or load main class libs.gdx-audio-sources.jar

我有一种感觉,这只是一个随机的.jar,无论如何它都在我的资产文件夹里面的libs文件夹里面。我输入的命令是:

java -cp libs/* tiles output file   (sorry this shouldn't be a comment)

libs文件夹包含所有的jar,我确实添加了每一个libGDX jar。 tiles是我的.tmx,图像包文件和图像的文件夹,输出是我的空输出文件夹。如果我只是将/ tiles和/ output的目录作为参数输入到TiledMapPacker.main(当然是在一个数组中),我只是得到

Exception in thread "main" java.lang.NoClassDefFoundError: com/badlogic/gdx/tools/imagepacker/TexturePacker$Settings
at com.badlogic.gdx.tiledmappacker.TiledMapPacker.main(TiledMapPacker.java:351)
at com.game.packer.Main.main(Main.java:22)
Caused by: java.lang.ClassNotFoundException: com.badlogic.gdx.tools.imagepacker.TexturePacker$Settings
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.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

我非常确定imagepacker.texturepacker $ settings位于我的libs文件夹里面的tiles-preprocessor.jar里面,所以我不知道它是怎么回事。

2 个答案:

答案 0 :(得分:1)

幸运的是,你不再需要这样做了 他们完全重构了Tiled地图代码。

答案 1 :(得分:0)

问题在于shell扩展:

java -cp libs/* tiles output file

shell会将libs/*扩展到目录中的所有文件,因此您将获得以下命令行:

java -cp libs/gdx-audio.jar libs/gdx-audio-sources.jar ... tiles output file

并且-cp期望以冒号分隔的列表,而不是以空格分隔。所以第二个JAR文件被解释为“主类”参数,但libs/gdx-audio-sources.jar显然不是类的名称。

所以我们需要colon-separated filenames,可以这样做:

java -cp $(printf "%s:" libs/*) tiles output file