首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在OSGi应用程序中使用JACOB?

如何在OSGi应用程序中使用JACOB?
EN

Stack Overflow用户
提问于 2016-03-14 12:48:17
回答 3查看 148关注 0票数 1

我有一个OSGI (更精确地说是基于智慧框架的)应用程序,在这个应用程序中,我想使用JACOB库与Office交互(目标是将PPT转换成图像)。我可以轻松地将JACOB添加到我的CLASSPATH中,但是JACOB需要在java.library.path环境变量中使用dll。

问题:我如何将它添加到maven构建中?

编辑我正在使用maven 3

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-18 12:37:38

雅各布似乎有一些特殊的代码,这些代码似乎与这类错误直接相关。实际上,有一个在jacob.dll.path中定义的LibraryLoader,通过它可以给雅各布一个绝对的路径来访问雅各布dll (而不是直接使用System.loadLibrary)。设置那个图书馆直接解决了我的问题。

票数 0
EN

Stack Overflow用户

发布于 2016-03-14 14:48:05

对于这个用例,您可能有三种可能性

MAVEN_OPTS

您可以使用MAVEN_OPTS环境变量传递给Maven构建所需的JVM选项(对于整个构建,因此适用于所有涉及的插件/目标执行):

代码语言:javascript
复制
export MAVEN_OPTS="-Djava.library.path=<path_to_dir>"

然而,这也将适用于与同一环境有关的所有其他构建。在Jenkins作业中,仍然可以在每个作业中配置这个变量,因此在特定的构建中是孤立的。

.mvn设置

由于Maven 3.3.1,您可以将一个.mvn文件夹作为相关项目的一部分,并将一个jvm.config文件作为这样一个选项的最佳位置。

两个新的可选配置文件.mvn/jvm.config.mvn/maven.config,位于项目源代码树的基目录下。如果存在,这些文件将提供默认jvm和maven选项。因为这些文件是项目源树的一部分,所以它们将出现在所有项目签出中,并且在每次生成项目时都会自动使用。

作为官方发布说明的一部分

在Maven中,在每个项目基础上定义JVM配置并不简单。基于环境变量MAVEN_OPTS和使用${user.home}/.mavenrc的现有机制是另一个选项,其缺点是不属于项目的一部分。 从这个版本开始,您可以通过${maven.projectBasedir}/.mvn/jvm.config文件定义JVM配置,这意味着您可以在每个项目基础上定义构建选项。此文件将成为您的项目的一部分,并将与您的项目一起签入。所以不再需要MAVEN_OPTS.mavenrc文件了。因此,例如,如果将以下JVM选项放入${maven.projectBasedir}/.mvn/jvm.config文件中: -Xmx2048m -Xms1024m -XX:MaxPermSize=512m -Djava.awt.headless=true

这些选项将适用于所有模块的情况下,一个多模块项目.

因此,您的${maven.projectBasedir}/.mvn/jvm.config文件可以提供以下内容:

代码语言:javascript
复制
-Djava.library.path=<path_to_dir>

这种方法的主要优点是将配置隔离到相关项目,并应用于整个构建。

插件配置

您应该将其设置为相关插件和配置条目(如果有的话)。例如,Maven编译器插件为JVM选项提供compilerArgs配置条目,Maven插件为其提供argLine配置选项,依此类推。

这是最不推荐的方法,因为配置是重复的,而且常常是不可能的(直到插件的可配置性)。但是,如果用例确实与某个插件的执行(编译、测试等)隔离,那么它可能仍然是合理的。

票数 1
EN

Stack Overflow用户

发布于 2016-03-18 10:28:25

我对maven部分有点困惑,因为当您使用OSGi时,这通常不是运行时库的一部分。

在OSGi中,如果在OSGi框架中使用dll,那么这一切都可以由OSGi框架来设置。必须将DLL打包到JAR中,并提供一些属性。在运行时,框架将提取库并确保可以找到它。(多个DLL之间存在一些相互依赖的问题。)

以下是OSGi中有关本机库的一些实用信息:

http://enroute.osgi.org/appnotes/native-libraries.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35987978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档