2013-03-01 38 views
2

如果我運行JAVAH未找到錯誤的JDK1.6,但不是在jdk1.7

"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

javah - 是文件名嗎? – 2013-03-01 17:58:34

+0

Javah是一個C頭文件和存根文件生成器 – 2013-03-01 18:01:32

+1

只是爲了確保你有沒有物理檢查每個jdk星座的bin目錄? – 2013-03-01 18:02:54

回答

0

我不能下的Java6編譯時重複這一點。也許你用java7編譯你的類文件,並且你的java6 Jdk包裝的Javah不能讀取它。

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 

我使用的OpenJDK上Linux操作系統。

相關問題