在jdk1.6上找不到javah错误,但在jdk1.7上找不到错误

时间:2013-03-01 17:56:42

标签: java java-7 jdk1.6

如果我跑

"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();
}

2 个答案:

答案 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无法读取它。