libgdx SpriteBatch Рабочий стол UnsatisfiedLinkError

Я получаю UnsatisfiedLinkError в проекте LibGdx при попытке запустить его автономную версию для настольных компьютеров. Обратите внимание: эта проблема не возникает, если я просто запускаю настольную версию напрямую, не создавая для нее автономную банку, только если я сначала создаю настольную банку, а затем пытаюсь ее запустить. Интересно отметить, что в целом было намного проще запустить настольную версию напрямую, и я даже не приблизился к запуску автономной настольной jar-файла, пока я не отыскал целую кучу jar-файлов и добавил их вручную в проект LibGdx.

Я использую Android Studio 3.3 с gradle 4.10 и Java 1.8.0_201 в Windows 10 x64 и развернул версию моего приложения LibGdx на рабочем столе с помощью команды gradle:

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 Generator с графическим интерфейсом для создания того же проекта, и у меня все еще есть эта проблема.

Тем не менее, я заметил, что из выходных данных программы было выбрано исключение UnsatifisedLinkError при вызове new SpriteBatch(), поскольку эта ссылка действительно ссылалась, но вызывалась из функции create(), и не ранее.

Я провел эксперимент и обнаружил, что если бы я полностью удалил вызов new SpriteBatch() и весь другой код, который зависел от этого вызова, например, создание текстуры и использование пакета спрайтов для рисования этой текстуры. Я обнаружил, что при этом программа работала без ошибок, конечно, я также не мог ничего нарисовать таким образом.

Итак, я провел еще один эксперимент и переместил вызов new SpriteBatch() из функции create в функцию render() следующим образом, как вы заметите в коде. Я просто пытался создать SpriteBatch () каждый раз, когда выполняется функция render (), если она еще не была создана, и выводить, сколько раз она бросала 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 MyGdxGame extends ApplicationAdapter {
    SpriteBatch batch;
    Texture img;
    long numAttempts = 0;

    @Override
    public void create () {

    }

    @Override
    public void render () {

        if (batch == null) {
            try {
                batch = new SpriteBatch();
            } catch (UnsatisfiedLinkError error) {
                System.out.println("Failed create SpriteBatch attempt #" + numAttempts);
                ++numAttempts;
            }

            if (batch != null) {
                img = new Texture("badlogic.jpg");
            }
        }

        Gdx.gl.glClearColor(1, 1, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        //batch.begin();
        //batch.draw(img, img.getWidth(), 0);
        //batch.end();
    }

    @Override
    public void dispose () {
        //batch.dispose();
        //img.dispose();
    }
}

Этот код, приведенный выше, привел к созданию такого вывода:

Failed create SpriteBatch attempt #0
Failed create SpriteBatch attempt #1
Failed create SpriteBatch attempt #2
Failed create SpriteBatch attempt #3
Failed create SpriteBatch attempt #4
Failed create SpriteBatch attempt #5
Failed create SpriteBatch attempt #6
Failed create SpriteBatch attempt #7
Failed create SpriteBatch attempt #8
Failed create SpriteBatch attempt #9
Failed create SpriteBatch attempt #10
Failed create SpriteBatch attempt #11
Failed create SpriteBatch attempt #12

И, похоже, он просто продолжил бы, говоря «Неудачная попытка создания SpriteBatch # ...», если бы я позволил приложению продолжать работу.

Как видите, кажется, что независимо от того, сколько кадров рендеринга произошло, new SpriteBatch() выдает исключение UnsatifiedLinkError, так что это явно не проблема просто потому, что я вызвал new SpriteBatch() слишком рано в программе.

Я также увидел еще одно предложение от здесь, что я должен сделать что-то вроде этого для настольной версии:

static {
    GdxNativesLoader.load();
}

А где-то еще, не помню где, увидел такое предложение:

LwjglNativesLoader.load();

поэтому я попробовал оба из них, но не одновременно, и ни один из них не работал, я сделал это, поместив их в файл DesktopLauncher следующим образом:

-------- DesktopLauncher.java --------------------------------------- ----

package com.mygdx.game.desktop;

import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import com.badlogic.gdx.backends.lwjgl.LwjglNativesLoader;
import com.badlogic.gdx.utils.GdxNativesLoader;
import com.mygdx.game.MyGdxGame;

public class DesktopLauncher {

    static {
        //GdxNativesLoader.load(); // I tried with this line of code
        //LwjglNativesLoader.load(); // and separately with this line
    }

    public static void main (String[] arg) {

        //GdxNativesLoader.load(); // and separately with this line, here

        //LwjglNativesLoader.load(); // and separately with this line, here


        LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();

        new LwjglApplication(new MyGdxGame(), config);
    }
}

Ничего из этого не исправило. Я также помню, что видел некоторые ссылки, которые предполагали, что, возможно, есть несоответствие в моих собственных jar-файлах gdx и моем gdx jar, но я не знал, как это проверить, но я покажу свой список jar-файлов, которые я добавил в папку desktop/libs, и мой gradle.build файл:

-------- файлы jar: -------------

core-1.0.jar
desktop-1.0.jar
gdx-1.9.9.jar
gdx-backend-lwjgl-1.9.9.jar
gdx-backend-lwjgl-natives.jar
gdx-natives.jar
gdx-openal.jar
gdx-platform-1.9.9.jar
jinput-2.0.5.jar
jinput-platform-2.0.5-natives-linux.jar
jinput-platform-2.0.5-natives-osx.jar
jinput-platform-2.0.5-natives-windows.jar
jutils-1.0.0.jar
lwjgl-2.9.0.jar
lwjgl-2.9.2.jar
lwjgl-3.2.1.jar
lwjgl-openal-3.2.1.jar
lwjgl-platform-2.9.2-natives-linux.jar
lwjgl-platform-2.9.2-natives-osx.jar
lwjgl-platform-2.9.2-natives-windows.jar

И вот часть моего файла build.gradle, в которую я включаю файлы jar, которые мне нужно было добавить вручную, чтобы даже запустить автономную версию моей версии LibGdx для рабочего стола:

---- часть моего файла build.gradle -----------

project(":desktop") {

    apply plugin: "java"

    dependencies {
        implementation project(":core")

        // ... a bunch of irrelevant implementation lines here

        compile files("libs/gdx-1.9.9.jar")
        compile files("libs/gdx-backend-lwjgl-1.9.9.jar")
        compile files("libs/lwjgl-2.9.0.jar")
        compile files("libs/core-1.0.jar")
        compile files("libs/desktop-1.0.jar")
        compile files("libs/gdx-natives.jar")

        // Noticed I commented these ones out
        // compile files("libs/gdx-backend-lwjgl-natives.jar")
        //compile files("libs/gdx-platform-1.9.9.jar")
        //compile files("libs/lwjgl-3.2.1.jar")

        compile files("libs/lwjgl-openal-3.2.1.jar")
        compile files("libs/jinput-2.0.5.jar")

        // Noticed I also commented out these
        //compile files("libs/jinput-platform-2.0.5-natives-linux.jar")
        //compile files("libs/jinput-platform-2.0.5-natives-osx.jar")
        //compile files("libs/jinput-platform-2.0.5-natives-windows.jar")
        //compile files("libs/jinput-1.0.0.jar")

        compile files("libs/jutils-1.0.0.jar")
        compile 'org.lwjgl.lwjgl:lwjgl:2.9.2'
        compile files("libs/lwjgl-2.9.2.jar")
        compile files("libs/lwjgl-platform-2.9.2-natives-linux.jar")
        compile files("libs/lwjgl-platform-2.9.2-natives-osx.jar")
        compile files("libs/lwjgl-platform-2.9.2-natives-windows.jar")
    }
}

Если вам интересно, я всегда проверяю, что мои core-1.0.jar и desktop-1.0.jar обновлены, создавая свою настольную версию, копируя эти jar-файлы в папку desktop/libs, а затем перестраивая ее, так что это не часть проблемы.

В любом случае, после всех этих исследований и всех этих экспериментов я все еще не смог найти причину и решение моей проблемы. Любая помощь будет принята с благодарностью, большое спасибо!

Редактировать сообщение:

Мой путь к классам таков:

0: C:\Program Files\Java\jdk1.8.0_201\jre\lib\charsets.jar
1: C:\Program Files\Java\jdk1.8.0_201\jre\lib\deploy.jar
2: C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\access-bridge-64.jar
3: C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\cldrdata.jar
4: C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\dnsns.jar
5: C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\jaccess.jar
6: C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\jfxrt.jar
7: C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\localedata.jar
8: C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\nashorn.jar
9: C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunec.jar
10: C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunjce_provider.jar
11: C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunmscapi.jar
12: C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunpkcs11.jar
13: C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\zipfs.jar
14: C:\Program Files\Java\jdk1.8.0_201\jre\lib\javaws.jar
15: C:\Program Files\Java\jdk1.8.0_201\jre\lib\jce.jar
16: C:\Program Files\Java\jdk1.8.0_201\jre\lib\jfr.jar
17: C:\Program Files\Java\jdk1.8.0_201\jre\lib\jfxswt.jar
18: C:\Program Files\Java\jdk1.8.0_201\jre\lib\jsse.jar
19: C:\Program Files\Java\jdk1.8.0_201\jre\lib\management-agent.jar
20: C:\Program Files\Java\jdk1.8.0_201\jre\lib\plugin.jar
21: C:\Program Files\Java\jdk1.8.0_201\jre\lib\resources.jar
22: C:\Program Files\Java\jdk1.8.0_201\jre\lib\rt.jar
23: C:\Users\me\AndroidStudioProjects\TestHtml\desktop\build\classes\java\main
24: C:\Users\me\AndroidStudioProjects\TestHtml\desktop\build\classes\kotlin\main
25: C:\Users\me\AndroidStudioProjects\TestHtml\core\build\classes\java\main
26: C:\Users\me\.gradle\caches\modules-2\files-2.1\de.tomgrill.gdxdialogs\gdx-dialogs-core\1.2.5\c55ef7e82d013ea7d99a66dcbdc24cfa7127337e\gdx-dialogs-core-1.2.5.jar
27: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.badlogicgames.box2dlights\box2dlights\1.4\3d77ad5b4164fb32fc67e2446e35911bb0aaf0bd\box2dlights-1.4.jar
28: C:\Users\me\.gradle\caches\modules-2\files-2.1\net.dermetfan.libgdx-utils\libgdx-utils-box2d\0.13.4\918d79a20ea3c898cdb3611782c5b2bfa6ec575b\libgdx-utils-box2d-0.13.4.jar
29: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx-box2d\1.9.9\e9a43c50fbe4f1e26dd0af5d2e78d125549e7f6b\gdx-box2d-1.9.9.jar
30: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.badlogicgames.ashley\ashley\1.7.0\a7c4083c0a42027a3c03ba7ccecef6cbe1c5f0a4\ashley-1.7.0.jar
31: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx-ai\1.8.0\ec30677d8ab1a8b8aa4b853c5f4e4b1361f50bf5\gdx-ai-1.8.0.jar
32: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx-controllers\1.9.9\55b69a040e076b17d01a5057f9cb2ce338a3331a\gdx-controllers-1.9.9.jar
33: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.github.czyzby\gdx-lml-vis\1.9.1.9.6\951c197ebe8c9644bd555722c449fa4cfda527fb\gdx-lml-vis-1.9.1.9.6.jar
34: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.kotcrab.vis\vis-ui\1.3.0\639741faa66a560197ee06a9412949402c831796\vis-ui-1.3.0.jar
35: C:\Users\me\.gradle\caches\modules-2\files-2.1\net.dermetfan.libgdx-utils\libgdx-utils\0.13.4\27affad2873d1c9c366a2290fc51f3927f3a5f83\libgdx-utils-0.13.4.jar
36: C:\Users\me\.gradle\caches\modules-2\files-2.1\de.tomgrill.gdxfacebook\gdx-facebook-core\1.4.1\1b5d4948b033a4b9a8f360d0fa76c49e6e17baec\gdx-facebook-core-1.4.1.jar
37: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx\1.9.9\bf26f2f816b3cfe37ac6e66615391c30714b7030\gdx-1.9.9.jar
38: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.esotericsoftware.spine\spine-libgdx\3.6.53.1\281f862762c15a8f8a79443a57526f4238b52b8e\spine-libgdx-3.6.53.1.jar
39: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.github.czyzby\gdx-lml\1.9.1.9.6\2590018dd6fc37566e3998db2cc2ecce0155c3b4\gdx-lml-1.9.1.9.6.jar
40: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.github.czyzby\gdx-kiwi\1.9.1.9.6\c00391b240ccf1212f3acd2095b6df489d4ff281\gdx-kiwi-1.9.1.9.6.jar
41: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx-tools\1.9.9\55228989f0479dd4bbe487766eda15e5d512c51e\gdx-tools-1.9.9.jar
42: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx-backend-lwjgl\1.9.9\ca8911cb94c0bfeb59f99e46ca9b92440958fb0e\gdx-backend-lwjgl-1.9.9.jar
43: C:\Users\me\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl_util\2.9.2\4b9e37300a87799856e0bd15ed81663cdb6b0947\lwjgl_util-2.9.2.jar
44: C:\Users\me\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl\2.9.2\a9d80fe5935c7a9149f6584d9777cfd471f65489\lwjgl-2.9.2.jar
45: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx-platform\1.9.9\7e644cfafdb436b13b24ac7993ffab17f306b64d\gdx-platform-1.9.9-natives-desktop.jar
46: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx-box2d-platform\1.9.9\72b2916f45f3f948896eda931cd597f7e698340f\gdx-box2d-platform-1.9.9-natives-desktop.jar
47: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx-controllers-desktop\1.9.9\d4b8b62f077382db145e7a94a27a994b68ce6ee\gdx-controllers-desktop-1.9.9.jar
48: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx-controllers-platform\1.9.9\26b8735060fdfd7dc6529cf5085fa57144a349d9\gdx-controllers-platform-1.9.9-natives-desktop.jar
49: C:\Users\me\.gradle\caches\modules-2\files-2.1\de.tomgrill.gdxfacebook\gdx-facebook-desktop\1.4.1\709e9a585082d7b875540d33ee3a4f4787ea74c3\gdx-facebook-desktop-1.4.1.jar
50: C:\Users\me\.gradle\caches\modules-2\files-2.1\de.tomgrill.gdxdialogs\gdx-dialogs-desktop\1.2.5\233048054a845d7a59d86c54e9d74f95749f74b5\gdx-dialogs-desktop-1.2.5.jar
51: C:\Users\me\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-jdk8\1.3.20\b1f3cb184c4ce4139741454df2f8fca5320f822d\kotlin-stdlib-jdk8-1.3.20.jar
52: C:\Users\me\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.2\510c7d317f5e9e700b9cfaac5fd38bdebf0702e0\lwjgl-platform-2.9.2-natives-windows.jar
53: C:\Users\me\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.2\d276cdf61fe2b516c7b7f4aa1b8dea91dbdc8d56\lwjgl-platform-2.9.2-natives-linux.jar
54: C:\Users\me\.gradle\caches\modules-2\files-2.1\org.lwjgl.lwjgl\lwjgl-platform\2.9.2\d55b46b40b40249d627a83a7f7f22649709d70c3\lwjgl-platform-2.9.2-natives-osx.jar
55: C:\Users\me\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput\2.0.5\39c7796b469a600f72380316f6b1f11db6c2c7c4\jinput-2.0.5.jar
56: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx-backend-headless\1.9.9\657d1d232f274162eb8fd600a137b2221f2fc9c\gdx-backend-headless-1.9.9.jar
57: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.badlogicgames.gdx\gdx-freetype\1.9.9\d947872087863b654d9a0e27a8cb10a29d6fd3d6\gdx-freetype-1.9.9.jar
58: C:\Users\me\.gradle\caches\modules-2\files-2.1\com.badlogicgames.jlayer\jlayer\1.0.1-gdx\7cca83cec5c1b2f011362f4d85aabd71a73b049d\jlayer-1.0.1-gdx.jar
59: C:\Users\me\.gradle\caches\modules-2\files-2.1\org.jcraft\jorbis\0.0.17\8872d22b293e8f5d7d56ff92be966e6dc28ebdc6\jorbis-0.0.17.jar
60: C:\Users\me\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-jdk7\1.3.20\aa17d6fd473ce53061a7b2b9d2ae96f547cae93d\kotlin-stdlib-jdk7-1.3.20.jar
61: C:\Users\me\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib\1.3.20\eb2a232734e09fcd1b958a5c7520a93c6de38b32\kotlin-stdlib-1.3.20.jar
62: C:\Users\me\.gradle\caches\modules-2\files-2.1\net.java.jutils\jutils\1.0.0\e12fe1fda814bd348c1579329c86943d2cd3c6a6\jutils-1.0.0.jar
63: C:\Users\me\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\7ff832a6eb9ab6a767f1ade2b548092d0fa64795\jinput-platform-2.0.5-natives-linux.jar
64: C:\Users\me\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\385ee093e01f587f30ee1c8a2ee7d408fd732e16\jinput-platform-2.0.5-natives-windows.jar
65: C:\Users\me\.gradle\caches\modules-2\files-2.1\net.java.jinput\jinput-platform\2.0.5\53f9c919f34d2ca9de8c51fc4e1e8282029a9232\jinput-platform-2.0.5-natives-osx.jar
66: C:\Users\me\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-common\1.3.20\7d7934e26ce34da1a0a8d00e38038d7cf3375e89\kotlin-stdlib-common-1.3.20.jar
67: C:\Users\me\.gradle\caches\modules-2\files-2.1\org.jetbrains\annotations\13.0\919f0dfe192fb4e063e7dacadee7f8bb9a2672a9\annotations-13.0.jar
68: C:\Users\me\AndroidStudioProjects\TestHtml\desktop\libs\core-1.0.jar
69: C:\Users\me\AndroidStudioProjects\TestHtml\desktop\libs\gdx-natives.jar
70: C:\Users\me\AndroidStudioProjects\TestHtml\desktop\libs\lwjgl-3.2.1.jar
71: C:\Users\me\AndroidStudioProjects\TestHtml\desktop\libs\lwjgl-natives-linux.jar
72: C:\Users\me\AndroidStudioProjects\TestHtml\desktop\libs\lwjgl-natives-macos.jar
73: C:\Users\me\AndroidStudioProjects\TestHtml\desktop\libs\lwjgl-natives-windows.jar
74: C:\Program Files\Android\Android Studio\lib\idea_rt.jar

Обновлять:

Мой полный рабочий стол модуль в build.gradle:

   project(":desktop") {
    //apply plugin: "application"
    //mainClassName = "DesktopLauncher"
    apply plugin: "java"


    dependencies {
        implementation project(":core")
        implementation "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
        implementation "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
        implementation "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
        implementation "com.badlogicgames.gdx:gdx-tools:$gdxVersion"
        implementation "com.badlogicgames.gdx:gdx-controllers-desktop:$gdxVersion"
        implementation "com.badlogicgames.gdx:gdx-controllers-platform:$gdxVersion:natives-desktop"
        implementation "de.tomgrill.gdxfacebook:gdx-facebook-desktop:1.4.1"
        implementation "de.tomgrill.gdxdialogs:gdx-dialogs-desktop:1.2.5"

        //implementation "com.badlogicgames.gdx:gdx:1.9.9"
        compile files("libs/gdx-1.9.9.jar")
        compile files("libs/gdx-backend-lwjgl-1.9.9.jar")
        //compile files("libs/lwjgl-2.9.0.jar")
        compile files("libs/core-1.0.jar")
        //compile files("libs/desktop-1.0.jar")
        compile files("libs/gdx-natives.jar")
        // compile files("libs/gdx-backend-lwjgl-natives.jar")
        //compile files("libs/gdx-platform-1.9.9.jar")
        //compile files("libs/lwjgl-3.2.1.jar")

        /*
        compile files("libs/lwjgl-openal-3.2.1.jar")
        compile files("libs/jinput-2.0.5.jar")
        compile files("libs/jinput-platform-2.0.5-natives-linux.jar")
        compile files("libs/jinput-platform-2.0.5-natives-osx.jar")
        compile files("libs/jinput-platform-2.0.5-natives-windows.jar")
        */

        //compile files("libs/jinput-1.0.0.jar")

        compile files("libs/jutils-1.0.0.jar")


        compile 'org.lwjgl.lwjgl:lwjgl:2.9.2'
        compile files("libs/lwjgl-3.2.1.jar")

        compile files("libs/lwjgl-platform-2.9.2-natives-linux.jar")
        compile files("libs/lwjgl-platform-2.9.2-natives-osx.jar")
        compile files("libs/lwjgl-platform-2.9.2-natives-windows.jar")

        compile files("libs/lwjgl-natives-linux.jar")
        compile files("libs/lwjgl-natives-macos.jar")
        compile files("libs/lwjgl-natives-windows.jar")
    }
}

person user904542    schedule 28.01.2019    source источник
comment
Я думаю, что проблема как-то связана с родными банками или банками lwjgl, помните, за этот вопрос по-прежнему назначается награда в 50 баллов тому, кто сможет найти для меня решение.   -  person user904542    schedule 02.02.2019
comment
пока нет помощи через 5 дней на щедрости - ну, теперь я понял, что ошибка на самом деле является ошибкой компоновщика времени выполнения, но я еще не понял, как ее решить, я попытался заменить компиляцию на родные для родного jars в gradle, и это дало мне эту ошибку: не удалось найти метод natives () для аргументов [коллекция файлов] для объекта типа org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. все еще ищу помощь   -  person user904542    schedule 04.02.2019
comment
Вау нет ответа даже после истечения срока награды   -  person user904542    schedule 08.02.2019
comment
Мой ответ ранее не был решением вашей проблемы. Это было не неправильно, но я не учел тот факт, что libgdx уже должен был упаковывать нативы.   -  person Dylan    schedule 08.02.2019
comment
Однако тот факт, что добавление GdxNativesLoader.load(); в статический блок не работает, заставляет меня думать, что проблема определенно связана с вашим путем к классам. Ни с каким кодом.   -  person Dylan    schedule 08.02.2019
comment
Возможно, попробуйте воссоздать проект с помощью следующего инструмента: github.com/libgdx/ libgdx / wiki / Project-Setup-Gradle.   -  person Dylan    schedule 09.02.2019
comment
Спасибо, но этот инструмент я уже использовал для создания проекта.   -  person user904542    schedule 09.02.2019
comment
@Dylan, я обновил свой вопрос, чтобы показать пути, которые оказались в моем пути к классам Java, которые я получил, проверив System.getProperty (java.class.path)   -  person user904542    schedule 09.02.2019
comment
@Dylan, теперь новая награда в 100 баллов за вопрос   -  person user904542    schedule 09.02.2019


Ответы (1)


Измените содержимое build.gradle, как показано ниже, снова синхронизируйте gradle и проверьте его один раз.

project(":desktop") {
    apply plugin: "java"


    dependencies {
        implementation project(":core")
        implementation "com.badlogicgames.gdx:gdx-backend-lwjgl:1.9.9"
        implementation "com.badlogicgames.gdx:gdx-platform:1.9.9:natives-desktop"
        implementation "com.badlogicgames.gdx:gdx-box2d-platform:1.9.9:natives-desktop"

    }
}

Я думаю, вы используете лишние ненужные библиотеки, которые не требуются.

Я добавил один рабочий образец проекта поверх битбакета, из которого вы можете клонировать его и сравнить с вашим

git clone https://[email protected]/zumbarlalsaindane/libgdx-test.git

Перед запуском приложения выполните следующий шаг:

   Go to Run => Run Configurations.. => choose DesktopLauncher, Arguments Tab
   => Working Directory => Others then browse to yourproject-android/assets/ 
   and click Apply => Run
person Zumbarlal Saindane    schedule 14.02.2019
comment
У меня уже есть все 3 зависимости в моем настольном модуле build.gradle, только вместо 1.9.9, у меня $ gdxVersion, я обновлю свой вопрос, чтобы показать весь мой настольный модуль в build.gradle, пожалуйста, проверьте его, если можете. - person user904542; 14.02.2019
comment
Я попытался удалить все остальное из моего модуля рабочего стола в build.gradle и просто поместить то, что у вас было, но это возвращает меня к старой ошибке, которую я получил при первой попытке сделать рабочий стол распространяемым, а именно: Ошибка: ошибка JNI произошла, проверьте вашу установку и повторите попытку. - person user904542; 14.02.2019
comment
Ваш ответ не помог напрямую, но он привел меня к поиску решения. Хотя ваша версия работала при запуске автономного настольного jar-файла, созданного командой gradle desktop:dist, у меня все еще были проблемы даже после внесения изменений, чтобы сделать мою более похожей на вашу, изменив мою gdxVersion с 1.9.9 на 1.9.8, мою roboVMVersion с 2.3. 5 до 2.3.3 и удаление google (), что ему не понравилось, потому что у меня тоже есть html-модуль, поэтому я поискал другие отличия и обнаружил, что вы используете gradle версии 2.14.1 в структуре проекта, а я использовал 4.10.1, я это изменил, но потом все началось ... - person user904542; 16.02.2019
comment
... жалуясь на другие настройки Gradle, которые мне пришлось использовать для различных других платформ, которые у меня были, такие как html, android и ios (roboVM), поэтому я решил просто создать проект только с рабочим столом с помощью инструмента libgdx, и теперь java автономный работает, и это было не из-за различий в версиях, а просто из-за некоторых конфликтующих настроек для других платформ, поэтому я решаю просто иметь две копии одного и того же проекта рядом, одну для рабочего стола и 1 для всех остальных платформы и просто скопируйте тот же код (и даже более двух копий, если окажется, что настройки gradle для любых других ... - person user904542; 16.02.2019
comment
... платформы конфликтуют друг с другом) - person user904542; 16.02.2019
comment
Обратите внимание на опечатку в моем комментарии 2 над этим, где я сказал, что я решаю, я хотел сказать, что мое решение, и я попытался отредактировать его, но я опоздал, это было через 9 минут, и система по-видимому, будет редактировать мой комментарий только через 5 минут после его создания. - person user904542; 16.02.2019
comment
Вышеупомянутое решение, которое я объяснил, что я тоже пришел, явно не идеален, но его придется использовать, если я или кто-либо другой не смогу найти лучшее решение. - person user904542; 16.02.2019