问题标签 [maven-nar-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在 Maven 中将 C 编译为本地库
我有一个依赖 C 源文件的 Java 项目。我有正确的 JNI 头文件,我只需要使用 C 代码将它们编译为target/dll
中的(或 Linux/OSX 等效项)。我当前的pom.xml构建 Java 代码,但不构建.dll
我正在使用带有 Clang 的 Java 8。我有jni-headers-maven-plugin,但我认为我不需要它,因为我不需要即时生成标题。我也有nar-maven-plugin,我认为它配置正确,但它没有出现在任何地方的日志中。
c++ - Maven NAR 插件:错误的链接库名称
我第一次使用 maven nar 插件在 C++ 中编译一系列 corba IDL 文件。我已经通过使用 exec 插件和omniidl 成功生成了存根和骨架,现在我在 src/ 下拥有所有 *.C 和 *.H 文件。
我们正在使用内部 Nexus 存储库来检索 NAR 依赖项,到目前为止,我设法编译了所有 *.o 文件。但是,链接器失败并显示以下消息:
问题是,例如文件夹
包含以下共享对象:
并且链接器尝试链接包含完整版本(依赖版本)的库名称
我的问题如下:
- 我可以假设包含共享对象的 Nexus 存储库中提供的 omniORB4 NAR 依赖项包含错误的 .so 名称吗?
- 有没有办法通过在链接器部分告诉 NAR 插件使用不同的库名称来链接来解决它?
这是配置 NAR 插件的 pom 部分:
谢谢。
java - 如何在 maven 项目中添加 jnetpcap 作为依赖项?
我创建了使用 jnetpcap 的应用程序。它应该是多平台的,可以在 32 和 64 平台上运行。我之前从未使用过 maven,那么如何将所有版本的 jnetpcap 添加到项目中?
我找到了一个使用 nar https://github.com/sugree/jnetpcap的解决方案,但我不明白如何正确使用它。
我应该复制项目的结构并在那里编译 jnetpcap 吗?如果这是 nar,而不是依赖项,如何将其添加到项目中,以便我可以在 java 类中使用 jnetpcap?
PS我也尝试使用conf从这里添加jnetpcap作为依赖项:https ://www.versioneye.com/clojure/jnetpcap:jnetpcap/1.4.r1425-1d
我已将此行添加到我的 pom.xml 中:
它编译时没有错误,但是当我尝试使用命令执行项目时:exec:java -Dexec.mainClass="org.sample.Main" 它因错误而崩溃:“java.library.path 中没有 jnetpcap”。
c++ - Maven nar build 中的 GoogleTest 编译错误 - 未定义对 `testing::internal::MakeAndRegisterTestInfo 的引用
我正在尝试使用 Maven 进行 Google 测试。所以,我使用这个链接安装了它。然后我为测试创建dummyTest.cpp
并将其添加到 pom.xml 以执行测试。当我这样做mvn clean install
时,我收到以下错误 -
和我正在使用dummyTest.cpp
的如下:-pom file
project structure
似乎我从其他博客文章和stackoverflow问答中以正确的方式阅读,但我无法弄清楚是什么导致了这个问题。任何帮助或对正确方向的任何提示将不胜感激。谢谢
maven - 在 nar-maven-plugin 中指定 Visual Studio 版本
我安装了多个版本的 Visual Studio。有没有办法指定使用哪个版本的 Visual Studio?另外,如果我想为多个版本的 Visual Studio 生成 NAR,NAR 插件可以处理吗?
理想情况下,最终产品将类似于:
或者至少有某种方式可以告诉您使用什么版本的 Visual Studio 来制作 NAR。nar-maven-plugin 可以做到这一点吗?
c++ - 为什么使用nar-maven编译静态库时添加编译器选项/MD?
设置library.type
为static
并运行mvn -X clean compile
时,DEBUG 输出显示:
[调试] Execute:Java13CommandLauncher: 执行 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\cl' 参数:
''
'/c'
'/nologo'
'/EHsc'
'/ DNDEBUG'
'/MD'
'/GR'
...
包括/MD
恕我直言不应该出现在这里。这同样适用于使用 set to 编译测试可执行文件和使用set test.link
tostatic
编译源文件。我会使用的唯一情况是编译链接到共享库的可执行文件时。test.link
shared
/MD
尽管 maven 生成了一个静态库并且测试运行没有错误,但_DLL
在代码中设置定义会混淆我__declspec(dllexport/dllimport)
用于编译共享库的宏,并且在静态情况下根本不需要。
任何人都可以给我一个提示,我是否正在监督某些事情,或者这可能是一个插件错误?
该示例取自网站上的示例并对其进行了修改,并将 pom 文件剥离到最小it0010-lib-static
:com.github.maven-nar
pom.xml:
c - 如何使用 maven nar 插件创建多个共享库?
如何使用 maven nar 插件创建多个共享库?这是我的 pom.xml 中的一个片段:
我可以用这个 pom 创建一个共享库。但我想建立两个库。从源文件包。我怎样才能做到这一点?
java - 使用 MinGW 编译器和 nar-maven-plugin 避免依赖机器的 POM
我有一个简单的基于 JNI 的项目来试验nar-maven-plugin
. 我正在运行 Windows 10 并且正在使用 MinGW 编译器。我将本机代码编译为 C++ 而不是 C,尽管我认为这对于这个问题并不重要。(“真正的”项目中的本机实现将使用 C++,所以一旦我超越了这个初始测试,仅仅改变它并不是微不足道的。)
为了maven install
通过 Eclipse IDE 进行构建,我需要在 POM 文件中明确指定链接器作为插件的一部分configuration
。相关部分在这里:
如果我这样做,那么我在我的本地机器上很好,但我相信我已经将我的 POM 专门用于某些机器/链接器。如果我将其完全取出,则会出现此错误:
如果我留下该<name>g++</name>
部分并只删除选项,那么它会编译但我的测试失败,因为它无法在运行时链接到本机实现。(这与--kill-at
标志和已知问题有关,所以这不是一个可怕的惊喜。)
有没有一种已知的方法来处理这个问题,以便我得到一个独立于机器的 POM?
java - 未使用“nar-maven-plugin”编译的 JUnit 测试的本机代码
我有一个使用 Maven 配置的 JNI 项目nar-maven-plugin
。Java 和 C++ 代码都驻留在项目中。主要代码显然可以正确编译(C++ 和 Java)。问题在于测试代码(JUnit)。
测试代码定义了一个本身具有本地方法的 Java 类。对应的本机代码驻留在目录中
nm
构建消息中没有证据表明该本地测试代码曾经被编译过,并且当我从命令行运行构建过程创建的 DLL时,根本不会出现相应的本地方法。另外,我故意将语法错误放入测试代码中并重新编译以查看是否会出现编译时错误。没有错误,这与我认为代码永远不会编译的信念一致。
相应地,我UnsatisfiedLinkError
在mvn install
. 请注意,我可以从测试失败的那一点看出,主(非测试)代码的本机方法已正确加载和链接。因此,我得出的结论是,存在一些与本机测试代码的构建和链接相关的问题。
我目前在 Windows 10 上使用 Eclipse IDE 和 MinGW 编译器获取本机代码。
我的 POM 的相关部分如下(根据我关于使用 MinGW 编译器和 nar-maven-plugin 避免与机器相关的 POM 与早期配置问题相关的回答略有更新):
有没有已知的方法来处理这个问题?(也许额外的配置标签?)