问题标签 [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 - 如何从命令行运行 nar 文件?
我使用 Eclipse 并使用nar-maven
插件在我的开发机器上构建了一个 JNI 项目。这可以在多种架构上编译,并给我留下.nar
文件。
我的问题是,现在我想在nar
. UnsatisfiedLinkError
当 Java 程序尝试加载应该在nar
文件中的本机库时,我不断收到消息。现在我意识到该.so
文件需要放在该文件上,java.library.path
但我的问题是我看不到在哪里指出这一点,因为唯一的副本不知何故在nar
文件中。我的印象是这将在幕后处理,因为我NarSystem.loadLibrary
在 Java 中使用自动生成的方法。
详情如下。
我的 POM 中配置nar
插件的部分:
在我的一个 Java 类中,我有一个静态初始化程序,它调用自动生成的方法来加载库:
运行后mvn install
,我在本地.m2/repository
目录的相应子目录中有以下文件:
maven-metadata-local.xml
_maven.repositories
project-0.0.1-arm-Linux-gpp-jni.nar
project-0.0.1.nar
project-0.0.1.pom
project-0.0.1-javadoc.jar
我尝试使用以下命令从命令行运行:
这开始运行相应的主程序,因此它找到了 Java 部分。当它到达应该加载本机库的地步时——上面的静态块——它会抛出错误
这个问题,Nar dependency in multi-module maven project,看起来很接近,但答案取决于已经以某种方式“暴露”了本机库。我跟着提问者在那里尝试mvn nar:nar-unpack
and mvn exec:java
,但这并没有让我进步。(从该问题中描述的第一个获得相同的明显空结果,以及我在此处为第二个描述的相同异常。)
考虑的其他问题:
- Maven - UnsatisfiedLinkError with java.library.path似乎是关于在 maven 进程之外查找库。根据 maven 配置文件给出的答案,一旦我部署,这似乎没有帮助。
- maven-nar-plugin 和依赖模块中的测试这处理特定于运行测试的问题。
- nar-maven-plugin 和 native-library-loader 不加载本机库这个很接近,但无论如何都没有答案。似乎有所不同,因为该海报试图以某种方式在命令行上指定库路径。
- 在 webapp 中使用原生 Maven 工件 (nar)这是关于合并到 webapp 中的,所以它是不同的。它似乎确实提供了这个线索:“这两者都是作为 NAR 工件产生的,并且需要 maven-nar 插件才能使用。” 但是我还没有弄清楚该插件需要如何使用!
那么如何从命令行运行这个主程序呢?如果有一些预处理步骤来“提取”本机库,它是什么?如果它是自动的,那么我错过了什么?谢谢!
maven - Maven自定义文件结构
我想为开发创建一个特定的自定义文件结构,我想知道它是否可以用 maven 完成。
值得一提的是,我正在使用 c++ 作为编程语言和Maven-nar-plugin
我希望能够运行如下命令:mvn dependency:resolve并且所需的库将进入文件夹Librairies。这样,我所要做的就是将库的包含文件夹链接到我在 Visual Studio 中的项目。
我不想用 maven 编译我只想用它的依赖管理器
我知道您可以更改 SourceDirectory,但您可以更改 Librairies 的安装位置吗?
工作区
|
|-- 项目1
| |-- pom.xml
|
|-- 项目2
| |-- pom.xml
|
|--
库 |-- ExampleLib-V-2.0
| |-- 包括
| |-- 库
|
|-- ExampleLib-V-3.1
java - Maven NAR 插件 + webapp 中的 Spring boot,在 Tomcat 中加载 .nar 工件
我已经设法将平台依赖项添加到jni 工件war
并由其生成到.maven-nar-plugin
WEB-INF/lib/
但问题是:添加的工件具有.nar
扩展名,而WebappClassLoaderBase
仅将.jar
s 添加到其内部类存储库中,因此我的 jni 桥未加载并且类无法访问导致 ClassNotFoundException
.
我在这里有什么选择?我认为有可能
- 以某种方式更改工件扩展
spring-boot:repackage
? - 将此自定义工件添加到类加载器存储库?
哪个会更好,我将如何实施?
java - Maven nar插件:nar文件不在依赖项目的类路径中
我有一个用 C 编写的 JNI 共享库和一个 maven 项目中的相应 Java 类,以及在另一个项目中使用该类的应用程序。我使用 nar-maven-plugin 来处理 JNI。版本:Maven 3.6.0 Java 12 nar plugin 3.6.0 我以 nar-maven-plugin 附带的集成测试 3 和 4 为例。对于它 3,我刚刚将 POM 更新为独立的并与 Java 12 一起使用:
我mvn install
在这个项目上运行,它安装在我的.m2
目录中
和it0003-jni-1.0-SNAPSHOT.nar
包含
现在我使用它的缩减版 4 来测试它,这是 Java 文件src/main/java/it0004/Hello.java
并且 POM 是
请注意,此 POM 仅处理编译。使用 指定依赖关系<type>nar</type>
,以便找到依赖关系。但是nar文件不在classPath中,所以编译失败。mvn -X compile
包含的输出
可以看到,依赖的nar文件不在classPath中,所以编译失败,因为找不到依赖类。如何确保 nar 文件包含在 classPath 中?
c++ - 如何使用 maven-nar 插件生成 cpp 二进制文件
我需要使用 maven-nar 插件编译 c++ 代码的帮助。我尝试通读文档,但无法使代码正常工作。任何帮助是极大的赞赏
http://maven.apache.org/xsd/maven-4.0.0.xsd">4.0.0
上面的 pom.xml 没有引发任何问题,但它没有为 Windows 创建任何二进制文件,而且我无法理解我可以为 WINDOWS 使用哪些选项。
java - 使用 NAR 文件作为 Maven 依赖项
一般来说,我对 Apache Nifi 和 NARs 很陌生。我正在创建一个自定义处理器 NAR 项目,该项目需要引用另一个 NAR 文件中存在的 jar 中的类。我无权访问生成此 NAR 的项目(源代码)。所以我试图将此 NAR 文件包含为 maven 依赖项。这类似于您将外部/本地 jar 添加为 maven 依赖项的方式。实现这一目标的正确方法是什么?
注意:我的自定义项目是“nifi-nar-bundles”的子项目,因此它将继承“nar-maven-plugin”
我正在使用 eclipse 及其 maven 插件,并尝试了几件事:
#1
这不会在 Eclipse 中的“Maven Dependencies”下添加 NAR 文件。但是,如果我将其删除<type>nar</type>
,则会在“Maven Dependencies”下显示 NAR 文件,但不会将其 jar 放入类路径中。
#2
我使用以下命令将 NAR 安装在本地 maven 存储库中,并将其打包为“nar”:
然后将其作为依赖项放入pom.xml
文件中,如下所示:
这也不会在 Eclipse 中的“Maven Dependencies”下添加 NAR 文件。
java - 将外部 jar 的依赖项添加到 NAR 文件
我有以下项目结构
我nifi-basename-nar
的项目具有以下项目的依赖关系nifi-basename-processors
:
我在项目的 pom.xml 中添加了一个外部 jar 的依赖项,nifi-basename-processors
如下所示,我的自定义处理器指的是这个 jar 中的类:
一旦我使用 构建项目maven clean install
,在项目下生成的 narnifi-basename-nar
就没有xyz.jar
捆绑在其中。因此,NoClassDefFoundError
当此自定义 nar 部署在 nifi 中时,它会抛出并且 nifi 无法启动。
处理此要求的正确方法是什么?
nexus3 - 将 nar 上传到 nexus 会引发内容类型错误
我有一个 nar 工件(它是由 maven-nar-plugin 处理的 Java 代码的原生代码),我想上传到我的 nexus 实例上。
根据7 年前的这个答案(我知道从那时起事情有时间改变),我正在编写正确的命令:
但是,这会失败并显示一个错误,指出它接收到 [application/zip](确实如此)并期望 [application/xml] 类型。我收到错误消息,但我如何才能表明它确实应该是 [application/zip] 而不是 [application/xml]?