如何在maven项目中包含共享对象文件
问题描述:
我正在使用创建共享对象文件的外部C++库(gdal/ogr),以便java可以利用它的功能。问题是我不确定我应该怎样处理这些.so文件,以及我如何在构建项目时让Maven使用它们。 我发现了如何将共享对象文件如何在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库一样。
答
我认为这个插件可以帮助您构建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}"