【问题标题】:IntelliJ, JInput and the java.library.pathIntelliJ、JInput 和 java.library.path
【发布时间】:2018-03-27 20:21:47
【问题描述】:

我正在开发一个同时使用 Jogl 和 JInput 的 java 项目,并且我在 IntelliJ 中工作。我遇到了一些应用程序无法找到各种 DLL 的问题。我知道推荐的方法是将 DLL 提取到一个文件夹,然后将 java.library.path 指向该文件夹。有没有办法以某种方式将这些库包含在项目配置中?我正在从 jCenter 中提取这些文件,我宁愿只指向 jar 文件并让 JNA 完成它的工作。

【问题讨论】:

  • 您使用哪个版本的 JOGL? JOGL 本身不使用 JNA,它使用 GlueGen(依赖于 JNI)。如果您真的想要一个非常简单的解决方案(尽管有一些限制),我建议您使用 jogamp-fat.jar。如果您处于非常受限的环境中,我担心您将不得不使用 java.library.path 并禁用自动本地库加载(请参阅 JOGL 用户指南)。

标签: java jna jogl jinput


【解决方案1】:

我使用下面的这种方法在某个对象需要 DLL 之前动态设置路径。调用如下:

setDllLibraryPath("C:/yourPathToDLLs")

设置库路径的方法

public static void setDllLibraryPath(String resourceStr) {
    try {
        System.setProperty("java.library.path", resourceStr);

        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);
    }
}

【讨论】:

    猜你喜欢
    • 2011-01-04
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多