Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant javah NullPointerException_Java_Ant_Java Native Interface - Fatal编程技术网

Ant javah NullPointerException

Ant javah NullPointerException,java,ant,java-native-interface,Java,Ant,Java Native Interface,现在,我只是使用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()); }

现在,我只是使用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>

我试着在网上查找异常,我看到了两篇关于它的帖子(&)。在那些帖子中,我遵循了这两条建议。我确保默认的JRE是JDK(jdk1.8.0_111),将tools.jar添加到Ant Home条目中,并更改build.xml运行/调试设置以在与工作区相同的JRE中运行。不幸的是,这些都没有起到作用。任何帮助都将不胜感激,如果您需要任何其他信息,请告诉我。

我发现了问题。尽管我将它改为使用JDK而不是JRE,但出于某种原因,它仍然在使用JRE。将项目的Ant builder更改为使用单独的JRE并选择JDK修复了它。

您没有实现
getInt
方法。这是故意的吗?@Rao是的,这是一个本机方法,所以实现将使用本机代码(C/C++)。
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)