我正在尝试将JInput用于我的项目,并且库需要一些二进制文件才能运行我的应用程序。
我发现,所需的二进制文件位于库中。但是,我在执行UnsatisfiedLinkError
时得到gradle run
,因为它无法找到库二进制文件。
所以我想在运行项目之前需要解压缩库.jar
?如何使用包含本机二进制文件的库?
这是我的build.gradle
plugins {
id "java"
id "application"
}
repositories {
mavenCentral()
}
dependencies {
// https://mvnrepository.com/artifact/net.java.jinput/jinput
compile group: 'net.java.jinput', name: 'jinput', version: '2.0.7'
}
编辑:在这里你可以看到图书馆的内容
答案 0 :(得分:-1)
是的,还有一个额外的步骤。我按照这些说明操作: Getting started with JInput
您在gradle文件中链接的JInput依赖项仅为可以访问的方法/类设置API。这些的实际机器代码在动态链接库... DLL中,即二进制文件。
首先,将DLL:JInput DLL download下载到文件夹中。
然后,您可以使用命令行参数(-Djava.library.path= "C:/pathToLibrary"
)链接此文件夹的路径,也可以在创建需要它的类之前通过调用以下方法动态链接该文件夹。
public static void setDllLibraryPath(String resourceStr) {
try {
System.setProperty("java.library.path", resourceStr);
//System.setProperty("java.library.path", "/lib/x64");//for example
Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");
fieldSysPath.setAccessible(true);
fieldSysPath.set(null, null);//next time path is accessed, the new path will be imported
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex);
}
}