0
現在,我只是創建一個簡單的程序使用JNI來搞砸和學習。我認爲使用Ant來建設會讓它容易得多。這裏是我的項目結構:螞蟻javah空指針異常
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運行/調試設置更改爲與工作空間在相同的JRE中運行。這些事情都不利於我們。任何幫助將不勝感激,如果有任何其他信息,你需要讓我知道。
你沒有實現'getInt'方法。它是故意的嗎? – Rao
@Rao是的,這是一個本地方法,所以實現將在本機代碼(C/C++)中進行。 – Stripies