Вот стек ошибок:
Код: Выделить всё
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jna/NativeLibrary
at io.github.libsdl4j.jna.SdlNativeLibraryLoader.loadLibSDL2(SdlNativeLibraryLoader.java:33)
at io.github.libsdl4j.jna.SdlNativeLibraryLoader.registerNativeMethods(SdlNativeLibraryLoader.java:24)
at io.github.libsdl4j.api.Sdl$InternalNativeFunctions.(Sdl.java:56)
at io.github.libsdl4j.api.Sdl.SDL_Init(Sdl.java:30)
at Demo.main(Demo.java:23)
Caused by: java.lang.ClassNotFoundException: com.sun.jna.NativeLibrary
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
Код: Выделить всё
package io.github.libsdl4j.jna;
import java.util.HashMap;
import java.util.Map;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import static com.sun.jna.Library.OPTION_CLASSLOADER;
import static com.sun.jna.Library.OPTION_STRING_ENCODING;
public final class SdlNativeLibraryLoader {
public static final String SDL_LIBRARY_NAME = "SDL2";
// This field keeps the reference to the loaded JNA library object to prevent it from being garbage collected.
private static NativeLibrary libSDL2;
private SdlNativeLibraryLoader() {
}
public static synchronized void registerNativeMethods(Class nativeClass) {
if (libSDL2 == null) {
libSDL2 = loadLibSDL2();
}
Native.register(nativeClass, libSDL2);
}
private static NativeLibrary loadLibSDL2() {
Map options = new HashMap();
options.put(OPTION_STRING_ENCODING, "UTF-8");
options.put(OPTION_CLASSLOADER, SdlNativeLibraryLoader.class.getClassLoader());
return NativeLibrary.getInstance(SDL_LIBRARY_NAME, options);
}
public static T loadLibSDL2InterfaceInstance(Class libraryInterface) {
Map options = new HashMap();
options.put(OPTION_STRING_ENCODING, "UTF-8");
options.put(OPTION_CLASSLOADER, SdlNativeLibraryLoader.class.getClassLoader());
return Native.load(SDL_LIBRARY_NAME, libraryInterface, options);
}
}
Поскольку это проект Maven, я предполагаю, что он использует инструмент Maven Project Builder. . Однако в свойствах активированы как Java Builder (Eclipse), так и Maven Project Builder. Я попробовал без Java Builder и получил ту же проблему. Вот POM.xml:
Код: Выделить всё
4.0.0
SDL4JDemo
JavaDemo
0.0.1-INSTALL{guice.disable.misplaced.annotation.check}
Demo
install
Код: Выделить всё
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
io.github.libsdl4j
libsdl4j
2.28.4-1.6
jar
LibSDL4J
LibSDL4J - Java language bindings for SDL2.
https://libsdl4j.github.io/
[*]
zlib License
https://opensource.org/licenses/Zlib
Kamil Ševeček
https://github.com/shinedeveloper
libsdl4j@outlook.com
scm:git:git://github.com/libsdl4j/libsdl4j.git
scm:git:ssh://github.com:libsdl4j/libsdl4j.git
https://github.com/libsdl4j/libsdl4j/tree/master
net.java.dev.jna
jna
5.15.0
org.jetbrains
annotations
23.0.0
org.slf4j
slf4j-api
1.7.36
- удалили файлы "module-info.java"; не устранило проблему.
- другие обнаруженные проблемы относятся к com.sun.java.Library, но не к NativeLibrary, или имеют другую среду.
Подробнее здесь: https://stackoverflow.com/questions/792 ... ivelibrary