首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LWJGL本地居民os + JPMS + GRADLE

LWJGL本地居民os + JPMS + GRADLE
EN

Stack Overflow用户
提问于 2021-05-18 01:00:16
回答 2查看 337关注 0票数 1

错误: UnsatisfiedLinkError

代码语言:javascript
复制
[LWJGL] Failed to load a library. Possible solutions:
    a) Add the directory that contains the shared library to -Djava.library.path or -Dorg.lwjgl.librarypath.
    b) Add the JAR that contains the shared library to the classpath.
[LWJGL] Enable debug mode with -Dorg.lwjgl.util.Debug=true for better diagnostics.
[LWJGL] Enable the SharedLibraryLoader debug mode with -Dorg.lwjgl.util.DebugLoader=true for better diagnostics.
Exception in thread "main" java.lang.UnsatisfiedLinkError: Failed to locate library: lwjgl.dll
    at org.lwjgl/org.lwjgl.system.Library.loadSystem(Library.java:162)
    at org.lwjgl/org.lwjgl.system.Library.loadSystem(Library.java:62)
    at org.lwjgl/org.lwjgl.system.Library.<clinit>(Library.java:50)
    at org.lwjgl.glfw/org.lwjgl.glfw.GLFW.<clinit>(GLFW.java:674)
FAILURE: Build failed with an exception.

我尝试让/实现java平台模块系统到我的一个项目中,而这个链接错误让我有了问题。下面的行是构建脚本和模块信息src代码。模块: buld.gradle.kts

代码语言:javascript
复制
import org.gradle.kotlin.dsl.support.unzipTo

plugins {
    `java-library`
}
group = "com.moc"
version = "0.0"
java {
    modularity.inferModulePath.set(true)
}
repositories {
    mavenCentral()
}
val nativesClasses: Configuration by configurations.creating {
    isTransitive = false
    extendsFrom(configurations.runtimeOnly.get())
}
tasks.register("unzips") {
    nativesClasses.asFileTree.forEach {
        unzipTo(File("${buildDir}/libs/natives"), it)
    }
}
dependencies {
    testImplementation("org.junit.jupiter:junit-jupiter-api:5.7.1")

    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
    
    implementation(fileTree("hard-typed/path/for/the/lwjgl-3.2.3/lwjgl.jar") )
    implementation(fileTree("hard-typed/path/for/the/lwjgl-3.2.3/lwjgl-glfw.jar") )
    implementation(fileTree("hard-typed/path/for/the/lwjgl-3.2.3/lwjgl-assimp.jar") )
    implementation(fileTree("hard-typed/path/for/the/lwjgl-3.2.3/lwjgl-opengl.jar") )

    runtimeOnly( fileTree("hard-typed/path/for/the/lwjgl-3.2.3/lwjgl-natives-windows.jar" ) )
    runtimeOnly( fileTree("hard-typed/path/for/the/lwjgl-3.2.3/wjgl-glfw-natives-windows.jar" ) )
    runtimeOnly( fileTree("hard-typed/path/for/the/lwjgl-3.2.3/lwjgl-assimp-natives-windows.jar" ) )
    runtimeOnly( fileTree("hard-typed/path/for/the/lwjgl-3.2.3/lwjgl-opengl-natives-windows.jar" ) )
}
tasks.test {
    useJUnitPlatform()
}

应用程序模块: build.gradle.kts

代码语言:javascript
复制
plugins {
    application
}
group = "com.moc"
version = "0.0"
java {
    modularity.inferModulePath.set(true)
}
application {
    mainModule.set("moc.app")
    mainClass.set("com.moc.main.App")
}
tasks.withType<JavaExec> {
    System.setProperty("org.lwjgl.librarypath",
        "hard-typed/path/of/natives-os/lwjgl;" +
                "hard-typed/path/of/natives-os/opengl;" +
                "hard-typed/path/of/natives-os/glfw;" +
                "hard-typed/path/of/natives-os/assimp" )
}
repositories {
    mavenCentral()
}
dependencies {
    implementation(project(":lib"))
}

lib & app模块:模块-info.java

代码语言:javascript
复制
module moc.lib {
    requires org.lwjgl.glfw;
    requires org.lwjgl.opengl;
    requires org.lwjgl.assimp;
    exports com.moc;
}
module moc.app {
    requires moc.lib;
}

>如何使用gradle构建脚本并没有任何外部插件将本机os链接到我们的项目?

EN

回答 2

Stack Overflow用户

发布于 2021-05-18 07:04:47

,我试过这个,它是有效的,但不知怎的,我觉得这不是正确的方式?

代码语言:javascript
复制
tasks.withType<JavaExec> {
    val lwjgl = System.setProperty("org.lwjgl.librarypath", "../libs/natives"
    systemProperty("org.lwjgl.librarypath", System.getProperty("org.lwjgl.librarypath") )
}
repositories {
    mavenCentral()
}
票数 0
EN

Stack Overflow用户

发布于 2021-05-18 08:09:52

,并为应用程序扩展尝试这个

代码语言:javascript
复制
val lwjgNativesProp : String? = System.setProperty("org.lwjgl.librarypathz", "../libs/natives")

application {
    applicationDefaultJvmArgs = arrayListOf("-Dorg.lwjgl.librarypath=${System.getProperty("org.lwjgl.librarypathz")}")
}

tasks.withType<JavaExec> {
    lwjglNativesProp?.let { systemProperty("org.lwjgl.librarypath", it) }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67578662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档