Ant javah NullPointerException
Ant javah NullPointerException
现在,我只是使用 JNI 创建一个简单的程序来摆弄和学习。我认为使用 Ant 进行构建会使它变得容易得多。这是我的项目结构:
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)
我试着在线查找异常,我看到了 2 篇关于它的帖子 (javah NullPointerException while using ANT in Eclipse Indigo & "Can't load javah" error in Eclipse)。我遵循了这些帖子中的两个建议。我确保默认的 JRE 是 JDK (jdk1.8.0_111),将 tools.jar 添加到 Ant Home 条目,并更改了 build.xml Run/Debug 设置到与工作区相同的 JRE 中的 运行。不幸的是,None 这些事情有所帮助。任何帮助将不胜感激,如果您需要任何其他信息,请告诉我。
我发现了问题。尽管我将其更改为使用 JDK 而不是 JRE,但出于某种原因它仍在使用 JRE。更改项目的 Ant 构建器以使用单独的 JRE 并选择 JDK 修复它。
现在,我只是使用 JNI 创建一个简单的程序来摆弄和学习。我认为使用 Ant 进行构建会使它变得容易得多。这是我的项目结构:
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)
我试着在线查找异常,我看到了 2 篇关于它的帖子 (javah NullPointerException while using ANT in Eclipse Indigo & "Can't load javah" error in Eclipse)。我遵循了这些帖子中的两个建议。我确保默认的 JRE 是 JDK (jdk1.8.0_111),将 tools.jar 添加到 Ant Home 条目,并更改了 build.xml Run/Debug 设置到与工作区相同的 JRE 中的 运行。不幸的是,None 这些事情有所帮助。任何帮助将不胜感激,如果您需要任何其他信息,请告诉我。
我发现了问题。尽管我将其更改为使用 JDK 而不是 JRE,但出于某种原因它仍在使用 JRE。更改项目的 Ant 构建器以使用单独的 JRE 并选择 JDK 修复它。