如果我跑
"C:\Program Files\Java\jdk1.6.0_24\bin\javah.exe" HelloWorld
我得到了
error: cannot access HelloWorld
但是
"C:\Program Files\Java\jdk1.7.0_15\bin\javah.exe" HelloWorld
生成HelloWorld.h
怎么了?我在PATH上有1.7,如果它是相关的......
class HelloWorld {
private native void print();
}
答案 0 :(得分:1)
在我的情况下,问题是java7可以使用.java文件作为输入,但java6似乎需要.class文件。将-classpath的值从src更改为bin可以解决我的问题。
即,当我的文件看起来像:
src/pkg/Hello.java
bin/pkg/Hello.class
我可以做以下任何一件事:
$JAVA_6/javah -classpath -jni -d . -classpath bin pkg.Hello
$JAVA_7/javah -classpath -jni -d . -classpath bin pkg.Hello
$JAVA_7/javah -classpath -jni -d . -classpath src pkg.Hello
但不是这样:
$JAVA_6/javah -classpath -jni -d . -classpath src pkg.Hello
我在linux上使用openjdk。
答案 1 :(得分:0)
在java6下编译时,我无法复制它。也许你用java7编译你的类文件,用java6 Jdk打包的Javah无法读取它。