2

如果我跑

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

2 回答 2

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。

于 2014-03-25T18:50:16.147 回答
0

在 java6 下编译时我无法复制它。也许你用java7编译了你的类文件,而用你的java6 Jdk打包的Javah无法读取它。

于 2013-03-10T16:45:46.203 回答