有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将h参数传递给maven编译器插件以创建JNI头文件

我已经试着在pom中通过这个论点,但它不承认。由于jdk 8,我们不必手动运行javah来生成头文件,而是可以将-h参数传递给javac,并在编译时生成头文件。因此,如果我可以将“-h dir”传递给maven编译器插件,我就可以在运行mvn compile时生成头文件

<plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.7.0</version>
      <configuration>
        <compilerArgs>
          <arg>-verbose</arg>
          <arg>-h .</arg>
        </compilerArgs>
      </configuration>
</plugin>

但当我运行mvn安装时,我得到了这个

[INFO]生成失败

[信息]------------------------------------------------------------------------

[信息]总时间:2.936秒

[信息]完成时间:2018-11-07T14:52:49+05:30

[信息]最终内存:9M/155M

[信息]------------------------------------------------------------------------

[错误]无法执行目标组织。阿帕奇。专家插件:maven编译器插件:3.7.0:在adiesha项目上编译(默认编译):致命错误编译:无效标志:-h-&燃气轮机;[帮助1]

有没有其他方法可以用maven实现这一点,或者我必须使用“javac-h dir”手动创建它们

任何帮助都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    我在maven构建中遇到了相同的错误“无效标志:-h目标/标题”

    我尝试了上面陀螺无齿轮的建议。我把原来的'-h目标/标题'分为'-h和'-h目标/标题'。这解决了我的问题。现在,我的项目中的所有jni头都已正确生成并放置在target/headers中

    下面是我的pom中完整的编译器插件配置部分。xml:

            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <compilerArgs>
                        <arg>-h</arg>
                        <arg>target/headers</arg>
                     </compilerArgs>
                    <source>11</source>
                    <target>11</target>
                </configuration>
            </plugin>
    

    有了这个pom,“mvn compile”命令就足以生成JNI头。请注意,“mvn clean”将而不是删除以前生成的头文件