java.lang.AbstractMethodError: com.sun.jna.Structure.getFieldOrder()Ljava/util/List;

Версия Minecraft
1.16.5
API
Forge
Крашит из за несовместимих версий библиотек
НО есть одна загвоздка ети библиотеки если я правильно понял уже встроини и я не могу не уменьшить и не увеличить версию
Как ето зделать?
 
Краш-лог
java.lang.AbstractMethodError: com.sun.jna.Structure.getFieldOrder()Ljava/util/List;
at com.sun.jna.Structure.fieldOrder(Structure.java:952) ~[jna-4.4.0.jar:4.4.0 (b0)]
at com.sun.jna.Structure.getFields(Structure.java:1006) ~[jna-4.4.0.jar:4.4.0 (b0)]
at com.sun.jna.Structure.deriveLayout(Structure.java:1172) ~[jna-4.4.0.jar:4.4.0 (b0)]
at com.sun.jna.Structure.calculateSize(Structure.java:1097) ~[jna-4.4.0.jar:4.4.0 (b0)]
at com.sun.jna.Structure.calculateSize(Structure.java:1049) ~[jna-4.4.0.jar:4.4.0 (b0)]
at com.sun.jna.Structure.allocateMemory(Structure.java:403) ~[jna-4.4.0.jar:4.4.0 (b0)]
at com.sun.jna.Structure.<init>(Structure.java:194) ~[jna-4.4.0.jar:4.4.0 (b0)]
at com.sun.jna.Structure.<init>(Structure.java:182) ~[jna-4.4.0.jar:4.4.0 (b0)]
at com.sun.jna.Structure.<init>(Structure.java:169) ~[jna-4.4.0.jar:4.4.0 (b0)]
at com.sun.jna.Structure.<init>(Structure.java:161) ~[jna-4.4.0.jar:4.4.0 (b0)]
at com.sun.jna.platform.win32.WinCrypt$DATA_BLOB.<init>(WinCrypt.java:42) ~[platform-3.4.0.jar:?]
at com.sun.jna.platform.win32.Crypt32Util.cryptUnprotectData(Crypt32Util.java:121) ~[platform-3.4.0.jar:?]
at com.sun.jna.platform.win32.Crypt32Util.cryptUnprotectData(Crypt32Util.java:103) ~[platform-3.4.0.jar:?]
at com.sun.jna.platform.win32.Crypt32Util.cryptUnprotectData(Crypt32Util.java:90) ~[platform-3.4.0.jar:?]
at com.example.examplemod.ExampleMod.preInit(ExampleMod.java:385) ~[?:1.0]
at com.example.examplemod.ExampleMod.<init>(ExampleMod.java:84) ~[?:1.0]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_51]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_51]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_51]
at java.lang.reflect.Constructor.newInstance(Constructor.java:422) ~[?:1.8.0_51]
at java.lang.Class.newInstance(Class.java:442) ~[?:1.8.0_51]
at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:67) [?:36.2]
at net.minecraftforge.fml.javafmlmod.FMLModContainer$$Lambda$3058/346049017.run(Unknown Source) [?:36.2]
at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:106) [?:?]
at net.minecraftforge.fml.ModContainer$$Lambda$3078/2070372626.run(Unknown Source) [?:?]
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1618) [?:1.8.0_51]
at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1610) [?:1.8.0_51]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) [?:1.8.0_51]
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) [?:1.8.0_51]
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1689) [?:1.8.0_51]
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) [?:1.8.0_51]
Краш-лог:
java.lang.AbstractMethodError: com.sun.jna.Structure.getFieldOrder()Ljava/util/List;
	at com.sun.jna.Structure.fieldOrder(Structure.java:952) ~[jna-4.4.0.jar:4.4.0 (b0)]
	at com.sun.jna.Structure.getFields(Structure.java:1006) ~[jna-4.4.0.jar:4.4.0 (b0)]
	at com.sun.jna.Structure.deriveLayout(Structure.java:1172) ~[jna-4.4.0.jar:4.4.0 (b0)]
	at com.sun.jna.Structure.calculateSize(Structure.java:1097) ~[jna-4.4.0.jar:4.4.0 (b0)]
	at com.sun.jna.Structure.calculateSize(Structure.java:1049) ~[jna-4.4.0.jar:4.4.0 (b0)]
	at com.sun.jna.Structure.allocateMemory(Structure.java:403) ~[jna-4.4.0.jar:4.4.0 (b0)]
	at com.sun.jna.Structure.<init>(Structure.java:194) ~[jna-4.4.0.jar:4.4.0 (b0)]
	at com.sun.jna.Structure.<init>(Structure.java:182) ~[jna-4.4.0.jar:4.4.0 (b0)]
	at com.sun.jna.Structure.<init>(Structure.java:169) ~[jna-4.4.0.jar:4.4.0 (b0)]
	at com.sun.jna.Structure.<init>(Structure.java:161) ~[jna-4.4.0.jar:4.4.0 (b0)]
	at com.sun.jna.platform.win32.WinCrypt$DATA_BLOB.<init>(WinCrypt.java:42) ~[platform-3.4.0.jar:?]
	at com.sun.jna.platform.win32.Crypt32Util.cryptUnprotectData(Crypt32Util.java:121) ~[platform-3.4.0.jar:?]
	at com.sun.jna.platform.win32.Crypt32Util.cryptUnprotectData(Crypt32Util.java:103) ~[platform-3.4.0.jar:?]
	at com.sun.jna.platform.win32.Crypt32Util.cryptUnprotectData(Crypt32Util.java:90) ~[platform-3.4.0.jar:?]
	at com.example.examplemod.ExampleMod.preInit(ExampleMod.java:385) ~[?:1.0]
	at com.example.examplemod.ExampleMod.<init>(ExampleMod.java:84) ~[?:1.0]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_51]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_51]
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_51]
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422) ~[?:1.8.0_51]
	at java.lang.Class.newInstance(Class.java:442) ~[?:1.8.0_51]
	at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:67) [?:36.2]
	at net.minecraftforge.fml.javafmlmod.FMLModContainer$$Lambda$3058/346049017.run(Unknown Source) [?:36.2]
	at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:106) [?:?]
	at net.minecraftforge.fml.ModContainer$$Lambda$3078/2070372626.run(Unknown Source) [?:?]
	at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1618) [?:1.8.0_51]
	at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1610) [?:1.8.0_51]
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) [?:1.8.0_51]
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) [?:1.8.0_51]
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1689) [?:1.8.0_51]
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) [?:1.8.0_51]

Вложения

  • image.png
    image.png
    18.9 KB · Просмотры: 9
192
2
9
Ну раз тебе еще никто не ответил, я всё же рискну попросить код этого класса хотя бы:
Краш:
    at com.example.examplemod.ExampleMod.preInit(ExampleMod.java:385) ~[?:1.0]
    at com.example.examplemod.ExampleMod.<init>(ExampleMod.java:84) ~[?:1.0]
Я слабо верю, что на ровном месте могут быть проблемы с версиями библиотек. В любом случае обычно правильнее обновить код, чем даунгрейдить библиотеки.
 
345
14
113
192
2
9
вот такой код приводит к ошибке
Ты используешь метод cryptUnprotectData(), который есть в новых версиях библиотеки, а та в свою очередь вшита в новые (~1.18+) версии игры. Как ты вообще код скомпилировал, если метода в jna-4.4.0 нет?...

Может быть я буду не прав, но... Если ты обновишь библиотеку в среде и напишешь успешно на её основе код, это приведет к тому, что мод не будет корректно работать на сервере и клиенте, ведь там тоже висит наверняка версия 4.4.0, которую ты должен будешь так же обновить и еще как-то раздать обновленный клиент игрокам.

Даже если ты найдешь способ поставить библиотеку в клиенты, ты приходишь к новой проблеме - другие моды, опирающиеся на jna (которая по-умолчанию в 1.16.5 версии 4.4.0) так же могут начать сбоить, ведь код разных версий библиотек может отличаться.

Если я не прав, пусть меня поправят. Но как я понимаю, в данном случае нужно выходить из положения, используя родную версию 4.4.0 или искать альтернативные решения.
И еще. Разве нельзя нужные классы новой версии библиотеки кинуть прямо к себе в мод, чтобы он работал конкретно на их основе? Думал, что так делать можно.
 
1,374
113
241
Разве нельзя нужные классы новой версии библиотеки кинуть прямо к себе в мод, чтобы он работал конкретно на их основе? Думал, что так делать можно.
Не всегда. В частности, если собираешь распространять мод под своим авторством (даже за бесплатно), может объявится правообладатель.
В прочие юр вопросы не вдавался, но лучше так не делать и подключать библиотекой.

Однако, в данном случае, согласен с твоим мнением, по поводу сохранения jna-4.4.0.
 
Ты используешь метод cryptUnprotectData(), который есть в новых версиях библиотеки, а та в свою очередь вшита в новые (~1.18+) версии игры. Как ты вообще код скомпилировал, если метода в jna-4.4.0 нет?...

Может быть я буду не прав, но... Если ты обновишь библиотеку в среде и напишешь успешно на её основе код, это приведет к тому, что мод не будет корректно работать на сервере и клиенте, ведь там тоже висит наверняка версия 4.4.0, которую ты должен будешь так же обновить и еще как-то раздать обновленный клиент игрокам.

Даже если ты найдешь способ поставить библиотеку в клиенты, ты приходишь к новой проблеме - другие моды, опирающиеся на jna (которая по-умолчанию в 1.16.5 версии 4.4.0) так же могут начать сбоить, ведь код разных версий библиотек может отличаться.

Если я не прав, пусть меня поправят. Но как я понимаю, в данном случае нужно выходить из положения, используя родную версию 4.4.0 или искать альтернативные решения.
И еще. Разве нельзя нужные классы новой версии библиотеки кинуть прямо к себе в мод, чтобы он работал конкретно на их основе? Думал, что так делать можно.
Я использую 1.16 и там уже вшита jna 4.4 и jna-platform 3.4
Так что мне делать?
 
192
2
9
Не всегда. В частности, если собираешь распространять мод под своим авторством (даже за бесплатно), может объявится правообладатель.
В прочие юр вопросы не вдавался, но лучше так не делать и подключать библиотекой.

Однако, в данном случае, согласен с твоим мнением, по поводу сохранения jna-4.4.0.
Хоть я и изложил свою точку зрения, она была неуместной. Среда не увидела импорты почему-то и в jna-platform 3.4 действительно есть нужный метод)

Повторил код автора, словил такой же краш. Посижу, подумаю, может надумаю))
 
Хоть я и изложил свою точку зрения, она была неуместной. Среда не увидела импорты почему-то и в jna-platform 3.4 действительно есть нужный метод)

Повторил код автора, словил такой же краш. Посижу, подумаю, может надумаю))
Буду очень рад если роскажите как решить проблему
 
Сверху