我正在尝试通过命令行打包我的.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里面,所以我不知道它是怎么回事。
答案 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