Ant javah NullPointerException



目前,我只是在创建一个使用JNI来处理和学习的简单程序。我认为使用蚂蚁进行建筑将使它变得容易得多。这是我的项目结构:

src/pkg/Test.java
bin/pkg/Test.class
c/
build.xml

test.java:

package pkg;
public class Test {
    public static void main(String[] args) {
        System.out.println(new Test().getInt());
    }
    public native int getInt();
}

build.xml:

<project name="Test" basedir="." default="main">
    <property name="src.dir" value="src"/>
    <property name="bin.dir" value="bin"/>
    <target name="clean">
        <delete dir="${bin.dir}"/>
    </target>
    <target name="compile" depends="clean">
        <mkdir dir="${bin.dir}"/>
        <javac srcdir="${src.dir}" destdir="${bin.dir}" includeantruntime="false"/>
    </target>
    <target name="build-c" depends="compile">
        <javah outputFile="test.h" classpath="${bin.dir}" class="pkg.Test"/>
    </target>
    <target name="main" depends="build-c"/>
</project>

例外:

build-c:
       [javah] Exception in thread "main" java.lang.NullPointerException
       [javah]  at com.sun.tools.javah.JavahTask.run(JavahTask.java:503)
       [javah]  at com.sun.tools.javah.JavahTask.run(JavahTask.java:329)
       [javah]  at com.sun.tools.javah.Main.main(Main.java:46)

我尝试在线查找异常,并看到了两个有关它的文章(Javah nullpointerexception在Eclipse Indigo中使用蚂蚁时,"无法在Eclipse中加载Javah;我遵循了这些帖子中的两个建议。我确保默认的JRE是JDK(JDK1.8.0_111),在Ant Home条目中添加了Tools.jar,并更改了build.xml run/debug设置,以在与工作区相同的JRE中运行。不幸的是,这些事情都没有帮助。任何帮助将不胜感激,如果您需要其他任何信息,请告诉我。

我发现了问题。即使我将其更改为使用JDK而不是JRE,但由于某种原因,它仍在使用JRE。更改项目的蚂蚁建筑商使用单独的JRE并选择JDK修复了它。

相关内容

  • 没有找到相关文章

最新更新