如何在maven项目中包含共享对象文件

时间:2013-02-28 19:33:24

标签: java maven swig shared-objects gdal

我正在使用外部c ++库(gdal / ogr)来创建共享对象文件,以便java可以利用其功能。问题是,我不确定我应该对这些.so文件做什么以及我应该如何让maven在构建项目时使用它们。 我找到了关于如何包含共享对象文件的this教程

但是当我按照给出的指示时,我才会收到此错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at org.lwjgl.Sys$1.run(Sys.java:73)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
    at org.lwjgl.Sys.loadLibrary(Sys.java:95)
    at org.lwjgl.Sys.<clinit>(Sys.java:112)
    at org.lwjgl.opengl.Display.<clinit>(Display.java:135)
    at com.googlecode.nativedependencies.example.App.main(App.java:22)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

有关相关.so文件及其生成方式的上下文,请参阅以下link关于使用java绑定编译gdal / ogr。

我只是在寻找包含这些文件的最强大的方法,这样我就可以最大程度地使用java中的gdal / ogr库,就像我对任何其他普通java库一样。

1 个答案:

答案 0 :(得分:0)

我认为这个插件可以帮助你构建java项目。但是你仍然需要通知JVM本地文件在哪里。

请参阅How to add native library to “java.library.path” with Eclipse launch (instead of overriding it)或简单How to Load a Java Native/Shared Library (.so)

你需要覆盖(在打开eclipse或运行java程序之前在同一个控制台中)

export LD_LIBRARY_PATH = "${workspace_loc}/lib:${LD_LIBRARY_PATH}"

或添加到java命令:

-Djava.library.path="${workspace_loc:project}\lib;${env_var:PATH}"