Java 可以在Linux下构建JNI.dll吗?

Java 可以在Linux下构建JNI.dll吗?,java,linux,maven,java-native-interface,maven-nar-plugin,Java,Linux,Maven,Java Native Interface,Maven Nar Plugin,我正在使用nar maven插件3.0.0 我的pom如下所示: <packaging>nar</packaging> <build> <plugins> <plugin> <groupId>com.github.maven-nar</groupId> <artifactId>nar-maven-plugin</artif

我正在使用nar maven插件3.0.0 我的pom如下所示:

<packaging>nar</packaging>

<build>
    <plugins>
        <plugin>
            <groupId>com.github.maven-nar</groupId>
            <artifactId>nar-maven-plugin</artifactId>
            <version>3.0.0</version>
            <extensions>true</extensions>
            <configuration>
                <libraries>
                    <library>
                        <type>jni</type>
                    </library>
                </libraries>
            </configuration>
        </plugin>
    </plugins>
</build>
nar
com.github.maven-nar
nar maven插件
3.0.0
真的
jni
而且它确实有效。在我的Linux下,它会自动找到gcc,并使用它构建所有内容并将其打包到nar中。然而,这是一个.so文件

我的问题是:是否可以将其配置为在Linux下创建nar with.dll,然后在nar with.so旁边创建?一般来说,生产JNI NAR,针对不同的体系结构


如果可能的话,请提供一些配置片段、链接或任何可以给我一些线索的东西。

是的,但它需要一个交叉编译器,用于您希望设置的每个平台。您的Jar构建过程还需要具有跨编译器意识

  • 将Windows JDK复制到linux上。否则,您将没有必要的头和implib。如果您查看,您将看到有两个JNI头文件;每个站台一个。当然,您需要一个implib来链接DLL,以便它可以连接到JVM
  • Get,一个交叉编译器环境
  • 教NAR插件关于(2)。这可能需要阅读NAR插件的源代码
  • 遗憾的是,您仍然需要一个Windows框来测试结果

  • 那么你确定要这么做吗?我非常怀疑您是否会发现这是一种常见的、受支持的做法,因为我们大多数人都希望测试我们构建的东西。因为您需要实际的窗口进行测试,所以最好在那里构建。

    Emm。。。非常普遍。有什么例子吗?假设我将安装MinGW,插件是否找到它并创建.dll?或者需要其他配置?使用cpp和链接器下的工具路径指定交叉工具链的位置。我相信您也可以使用nar.arch属性来指定目标拱门。1。我认为,由于JNI是一个标准,所以头部是常见的。在编译时链接到实现的原因是什么?我想在运行时链接到它。2.谢谢,我将使用apt 3。你是说学习?我不想阅读源代码,我正在搜索是否有人在我之前这样做,并且有一些有用的提示要传递。显然不是你。4.不是我。我是开发者。我不想用Windows+Mac+Android+持有VM。。。只是为了编译库。我只是编译并发送给3-4名测试人员,他们每个人都有不同的环境。对我肯定。@abc1。不,文件
    jni_md.h
    因平台而异。这就是它的目的。除非使用调用API的元素,否则不需要链接。2.不要对试图帮助你的人发表冒犯性的评论。你可能需要为解决自己的问题做出比你最初想象的更多的贡献。这不是任何人的错。@EJP我不是有意发表冒犯性的评论。如果听起来是这样,那是偶然的。无论如何,我已经解决了这个问题,因为我指出了您的
    jni\u md.h
    在每个平台上是不同的。我刚刚将它从
    include/win32
    复制到linux中,并构建了jni dll,它的工作原理很好。我使用c
    make
    ,因为这个插件似乎不支持多个输出文件。由于目前时间不够,我将在几天内发布完整的操作指南。