3

我正在尝试通过命令行打包我的 .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 文件夹包含所有的罐子,我确实添加了每一个 libGDX 罐子,只是为了确定。瓦片是我的 .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 在 tiled-preprocessor.jar 中,它在我的 libs 文件夹中,所以我不知道发生了什么。

4

2 回答 2

1

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

于 2013-04-27T17:55:29.787 回答
0

问题在于外壳扩展:

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显然不是类的名称。

所以我们需要用冒号分隔的文件名,可以这样做:

java -cp $(printf "%s:" libs/*) tiles output file
于 2012-10-20T15:46:50.850 回答