java - 是否可以在 Linux 下构建 JNI .dll?

标签 java linux maven java-native-interface maven-nar-plugin

我正在使用 nar-maven-plugin 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>

而且它确实有效。在我的 Linux 下,它会自动找到 gcc 并使用它来构建所有内容并将其打包到 nar 中。然而,这是 .so 文件。

我的问题是:是否有可能以某种方式配置它以在带有 .so 的 nar 旁边创建带有 .dll 的在 Linux 下 nar?并且通常生成 JNI nars,以适应不同的架构?

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

最佳答案

  1. 将 Windows JDK 复制到 Linux 上。否则,您将不需要 header 和 implib。如果你看,你会看到有两个 JNI 头文件;一种是按平台。当然,您需要一个 implib 来链接您的 DLL,以便它可以连接到 JVM。
  2. 获取https://fedoraproject.org/wiki/MinGW?rd=SIGs/MinGW ,一个交叉编译环境。
  3. 教 NAR 插件关于 (2)。这可能需要阅读 NAR 插件的源代码。
  4. 遗憾的是您仍然需要一个 Windows 机器来测试结果

那么你确定要这样做吗?我非常怀疑您会发现这是一种常见的、受支持的实践,因为我们大多数人都想测试我们构建的东西。由于您需要实际的 Windows 进行测试,因此您不妨在那里构建。

关于java - 是否可以在 Linux 下构建 JNI .dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25614139/

相关文章:

java - 具有固定标题的可滚动内容,无需使用 JTable

java - RabbitMQ com.rabbitmq.client.AlreadyClosedException : connection is already closed due to connection error

linux - 安装 rpm 后加载模块

java - 如何使用ember部署的jar

android - 尝试使用Maven和/或Gradle将库导入android项目

java - 使用 maven 发布插件 Hook 自定义 maven 插件

java - 如何关闭 p :password? 的重新显示

java - Spring 启动 : Unable to configure

linux - rsync 使用包含选项仅复制某些类型的文件

linux - 阻止 Screenly Raspberry Pi 关闭屏幕