虽然在类路径中添加了它,但无法使用我的JNAerator构建的jar

时间:2013-07-02 11:46:05

标签: java eclipse jar jnaerator

我已经下载了最新的JNAerator jar(jnaerator-0.12-SNAPSHOT-20130609)here。 然后,从我的Ubuntu 13.04 64位,我用命令翻译了一个简单的C源(下面):

java -jar jnaerator-0.12-SNAPSHOT-20130609.jar -gui -mode StandaloneJar operations.c

这样我就得到了一个jar operations.jar


operations.c:

int myAddtion(int a, int b){
    return a+b;
}

然后我将这个jar添加到我的Eclipse(Juno 4.1)测试项目构建路径中:这里是我的项目组织的屏幕截图

My Eclipse project organisation

这是我项目的单一源文件:

package com.gmail.loloof64.j2se.bon_compte.operations;

import operations.OperationsLibrary;

public class BonCompteTest {

    public static void main(String[] args) {
        System.out.println(OperationsLibrary.myAddtion(10, 30));
    }
}

但是我得到以下错误输出:

juil. 02, 2013 1:19:47 PM org.bridj.BridJ log
INFO: Library not found : operations
juil. 02, 2013 1:19:47 PM org.bridj.BridJ log
INFO: Library not found : operations
Exception in thread "main" java.lang.UnsatisfiedLinkError: operations.OperationsLibrary.myAddtion(II)I
    at operations.OperationsLibrary.myAddtion(Native Method)
    at com.gmail.loloof64.j2se.bon_compte.operations.BonCompteTest.main(BonCompteTest.java:8)
# BridJ: dlopen error when loading operations : operations: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type
# BridJ: dlopen error when loading operations : operations: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type

(最后一句是指:无法打开共享对象文件:没有此类型的文件或文件夹。)

我正在使用sun Java7 JDK(64位)。

有人知道我忘记了什么吗?

我确信必定存在一个问题,比如我的C源文件丢失了,但我试图将它添加到项目中,并添加到jar,在几个位置,但它没有解决我的问题

此致

1 个答案:

答案 0 :(得分:2)

这些日志(和您的命令行)似乎表明BridJ未能找到您的本机库(即.dll / .so / .dylib文件)。 要解决这个问题,您有几个选择:

  • 将您的库作为command-line argument提供给JNAerator
  • 如果您的系统上安装了库,请调整特定于平台的查找路径:请参阅Libraries Lookup on the wiki
  • 使用环境变量BRIDJ_OPERATIONS_LIBRARY=path或java属性-Dbridj.operations.library=path
  • 在运行时指向其完整路径