【问题标题】:Java .dll files not working in .jarJava .dll 文件在 .jar 中不起作用
【发布时间】:2018-06-19 11:45:47
【问题描述】:

我正在尝试使用“net.java.games.input”中的第三方库来监听 Java 中的键盘事件。当我在 Eclipse 中运行我的代码时,它运行良好。但是当我构建我的项目并运行 .jar 时,它没有。我猜的原因是,该库需要一些 .dll 文件来听我的键盘,而它们在 .jar 中不起作用。

这是我的代码示例;

ControllerEnvironment ce = ControllerEnvironment.getDefaultEnvironment();
Controller[] ca = ce.getControllers();

那么,我应该怎么做才能在 .jar 中完成这项工作?

谢谢。

【问题讨论】:

  • 我查看了您的库(这里:github.com/sgothel/jinput/tree/master/coreAPI)我没有看到涉及 dll,即使它在 linux 上也可以工作,所以我很确定它们没有,我认为更多的是构建问题.你如何生成你的jar?你能做一个失败或抛出异常的简单代码示例吗?
  • @ArnaultLePrévost-Corvellec 当我运行没有 .dll 文件的代码时,我得到了这个异常; java.lang.UnsatisfiedLinkError: java.library.path 中没有 jinput-dx8_64
  • 如果 eclipse 没有自动执行此操作,您的问题将是相同的^^

标签: java dll


【解决方案1】:

您可以使用System.loadLibrary() 让JVM 加载您的dll 或System.load() 从特定路径加载文件:

static {
    System.load("PATH/TO/file.dll");
}

【讨论】:

    【解决方案2】:

    所以你的问题与此有关

    JInput "no jinput-dx8 in java.library.path" Error

    你应该设置 java.library.path 属性指向目录 包含 JInput 的本机 dll。您可以通过添加来做到这一点 -Djava.library.path=x(其中 x 是您的路径)到命令行或 Eclipse 中“运行配置”对话框的“VM 参数”字段。

    2010 年 1 月 12 日 19:48 回答

    axtavt 198k31421427

    你也可以在你的 main 开始时这样做

    System.setProperty("java.library.path", System.getProperty("java.library.path")+";thePathOfYourDll");

    【讨论】:

      猜你喜欢
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多