Why do I recieve error 'java.lang.UnsatisfiedLinkError: Can't load library' when the file can be found?
Why do I recieve error 'java.lang.UnsatisfiedLinkError: Can't load library' when the file can be found?
为什么我会收到此错误,即使文件明明在那里并且可以读取?
我的项目正在使用 lwjgl 和 imgui-java。我已将 -Dimgui.library.path="libs"(存储有问题的 .dylib 的位置)添加到我的 VM 选项,应用程序应该打开,显示演示 IMGUI。
我还在下面发布了我的 build.gradle 文件:
plugins {
id 'java'
}
group 'org.tpsgames'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2'
}
import org.gradle.internal.os.OperatingSystem
project.ext.lwjglVersion = "3.3.1"
project.ext.jomlVersion = "1.10.4"
project.ext.imguiVersion = '1.86.4'
project.ext.lwjglNatives = "natives-macos"
switch (OperatingSystem.current()) {
case OperatingSystem.MAC_OS:
project.ext.lwjglNatives = System.getProperty("os.arch").startsWith("aarch64") ? "natives-macos-arm64" : "natives-macos"
break
}
repositories {
mavenCentral()
}
dependencies {
implementation platform("org.lwjgl:lwjgl-bom:$lwjglVersion")
implementation "io.github.spair:imgui-java-app:1.86.4"
implementation platform("org.lwjgl:lwjgl-bom:$lwjglVersion")
implementation fileTree('libs') {include '*.jar'}
['', '-opengl', '-glfw'].each {
implementation "org.lwjgl:lwjgl$it:$lwjglVersion"
implementation "org.lwjgl:lwjgl$it::natives-macos"
}
implementation "io.github.spair:imgui-java-binding:1.86.4"
implementation "io.github.spair:imgui-java-lwjgl3:1.86.4"
implementation "io.github.spair:imgui-java-natives-macos:1.86.4"
implementation "org.lwjgl:lwjgl"
implementation "org.lwjgl:lwjgl-assimp"
implementation "org.lwjgl:lwjgl-glfw"
implementation "org.lwjgl:lwjgl-nfd"
implementation "org.lwjgl:lwjgl-openal"
implementation "org.lwjgl:lwjgl-opengl"
implementation "org.lwjgl:lwjgl-stb"
runtimeOnly "org.lwjgl:lwjgl::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-assimp::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-glfw::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-nfd::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-openal::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-opengl::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-stb::$lwjglNatives"
implementation "org.joml:joml:1.10.4"
}
test {
useJUnitPlatform()
}
您的计算机很可能有一个CPU采用ARM架构,例如M1芯片,而不是x86架构。
因此,JVM 进程无法加载 imgui-java64.dylib 共享库,因为 imgui-java 目前仅提供 x86 CPU 体系结构共享库,不提供 ARM 共享库。
查看此 GitHub 问题:https://github.com/SpaiR/imgui-java/issues/123
和这个(当前打开)GitHub 合并请求:https://github.com/SpaiR/imgui-java/pull/112 添加 ARM CPU 对 imgui-java.
的支持
您唯一的解决方案可能是合并当前在 GitHub Pull Request 中完成的工作并自己在本地为您的 ARM CPU 编译 imgui-java 或者等到 PR合并并发布 imgui-java 附带 macOS ARM 共享库。
为什么我会收到此错误,即使文件明明在那里并且可以读取?
我的项目正在使用 lwjgl 和 imgui-java。我已将 -Dimgui.library.path="libs"(存储有问题的 .dylib 的位置)添加到我的 VM 选项,应用程序应该打开,显示演示 IMGUI。
我还在下面发布了我的 build.gradle 文件:
plugins {
id 'java'
}
group 'org.tpsgames'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2'
}
import org.gradle.internal.os.OperatingSystem
project.ext.lwjglVersion = "3.3.1"
project.ext.jomlVersion = "1.10.4"
project.ext.imguiVersion = '1.86.4'
project.ext.lwjglNatives = "natives-macos"
switch (OperatingSystem.current()) {
case OperatingSystem.MAC_OS:
project.ext.lwjglNatives = System.getProperty("os.arch").startsWith("aarch64") ? "natives-macos-arm64" : "natives-macos"
break
}
repositories {
mavenCentral()
}
dependencies {
implementation platform("org.lwjgl:lwjgl-bom:$lwjglVersion")
implementation "io.github.spair:imgui-java-app:1.86.4"
implementation platform("org.lwjgl:lwjgl-bom:$lwjglVersion")
implementation fileTree('libs') {include '*.jar'}
['', '-opengl', '-glfw'].each {
implementation "org.lwjgl:lwjgl$it:$lwjglVersion"
implementation "org.lwjgl:lwjgl$it::natives-macos"
}
implementation "io.github.spair:imgui-java-binding:1.86.4"
implementation "io.github.spair:imgui-java-lwjgl3:1.86.4"
implementation "io.github.spair:imgui-java-natives-macos:1.86.4"
implementation "org.lwjgl:lwjgl"
implementation "org.lwjgl:lwjgl-assimp"
implementation "org.lwjgl:lwjgl-glfw"
implementation "org.lwjgl:lwjgl-nfd"
implementation "org.lwjgl:lwjgl-openal"
implementation "org.lwjgl:lwjgl-opengl"
implementation "org.lwjgl:lwjgl-stb"
runtimeOnly "org.lwjgl:lwjgl::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-assimp::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-glfw::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-nfd::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-openal::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-opengl::$lwjglNatives"
runtimeOnly "org.lwjgl:lwjgl-stb::$lwjglNatives"
implementation "org.joml:joml:1.10.4"
}
test {
useJUnitPlatform()
}
您的计算机很可能有一个CPU采用ARM架构,例如M1芯片,而不是x86架构。
因此,JVM 进程无法加载 imgui-java64.dylib 共享库,因为 imgui-java 目前仅提供 x86 CPU 体系结构共享库,不提供 ARM 共享库。
查看此 GitHub 问题:https://github.com/SpaiR/imgui-java/issues/123 和这个(当前打开)GitHub 合并请求:https://github.com/SpaiR/imgui-java/pull/112 添加 ARM CPU 对 imgui-java.
的支持您唯一的解决方案可能是合并当前在 GitHub Pull Request 中完成的工作并自己在本地为您的 ARM CPU 编译 imgui-java 或者等到 PR合并并发布 imgui-java 附带 macOS ARM 共享库。