当我试图运行桌面独立版本时,我在LibGdx项目中得到UnsatisfiedLinkError.请注意,如果我只是直接运行桌面版本而不构建一个独立的jar,只有我先构建一个桌面jar,然后尝试运行它,才会出现此问题.有趣的是,直接运行桌面版本总体上要容易得多,而且我甚至没有接近运行独立的桌面jar,直到我搜索了一大堆jar文件,并手动添加它们到LibGdx项目.
我在Windows 10 x64上使用Android Studio 3.3,gradle 4.10和Java 1.8.0_201,并使用'gradle'命令将我的LibGdx应用程序版本部署到桌面:
gradle desktop:dist 来自ProjectRoot.
然后在运行由此创建的jar文件时,通过从ProjectRoot键入命令行:
cd desktop/build/libs, 然后 java -jar desktop-1.0.jar
这样做我得到了 UnsatisfiedLinkError error
我尝试将jar文件复制到Linux并在那里进行测试,我也遇到了同样的错误.
我做了一些搜索,我发现一个建议可能是调用new SpriteBatch()过早发生了:
就像在create()核心模块中的函数之前一样,但这不是问题,因为new SpriteBatch()调用从来没有比这更早.
此链接使用的建议LibGdx Setup Generator也没有帮助我,因为我已经使用该LibGdx Setup GeneratorGUI工具来创建同一个项目,我仍然遇到这个问题.
我注意到,虽然从程序的输出中,它在new SpriteBatch()调用时抛出了UnsatifisedLinkError异常,因为该链接确实引用了,但它是从create()函数调用的,而不是早于该函数.
我做了一个实验,发现如果我new SpriteBatch()完全删除了调用以及依赖于该调用的所有其他代码,例如创建纹理,并使用精灵批处理来绘制该纹理.我发现通过这样做,程序运行没有得到错误,当然我也无法绘制任何东西.
所以,然后我做了另一个实验,并按照以下方式将new SpriteBatch()调用从create函数移到render()函数中,正如您将在代码中注意到的那样.我只是尝试在每次执行render()函数时创建SpriteBatch(),如果尚未创建它,并输出它抛出的次数UnsatisfiedLinkError exception
------------------------- MyGdxGame.java ---------------------- ----------------
package com.mygdx.game;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
public class …Run Code Online (Sandbox Code Playgroud) desktop-application gradle libgdx unsatisfiedlinkerror spritebatch