簡體   English   中英

在不同的包中生成JNI頭文件

[英]Generate JNI header file in different packages

如果我在一個地方(即在默認包中)擁有我的所有.java和.class文件,那么一切都很好,我會做所有JNI的東西,等等。但在這種情況下,我有package-ception(很多目錄),我的類和Java文件在/bin/src中分開,依此類推。 我需要生成頭文件,但我一直都會遇到錯誤。 我嘗試了很多命令,我看到了不同的教程。 我已經沒有選擇了。 所以我的項目在c://gvk/SEP3 ,然后使用我將要使用的本機方法的類和Java文件位於/bin/CalculatorServer/src/CalculatorServer

我一直從具有本機方法的類文件的目錄運行javah命令。 我到目前為止嘗試的命令是:

javah -d ./CalculatorServer NativeMethodsCalculator

錯誤:無法找到“NativeMethodsCalculator”的類文件。

javah -d ./CalculatorServer CalculatorServer.NativeMethodsCalculator

錯誤:無法找到“CalculatorServer.NativeMethodsCalculator”的類文件。

javah -d c://gvk/SEP3/bin/CalculatorServer -classpath c://gvk/SEP3/bin/CalculatorServer NativeMethodsCalculator

錯誤:無法找到“NativeMethodsCalculator”的類文件。

javah -classpath c://gvk/SEP3/bin/CalculatorServer -o NativeMethodsCalc.h src.CalculatorServer.NativeMethodsCalculator

錯誤:無法找到'src.CalculatorServer.NativeMethodsCalculator'的類文件。

javah -jni bin.CalculatorServer.NativeMethodsCalculator

錯誤:找不到'bin.CalculatorServer.NativeMethodsCalculator'的類文件。

我一直從具有本機方法的類文件的目錄運行javah命令

那是你的錯。 您應該從包含最外層程序包的目錄運行它,內部程序包及其下面的.class文件。 然后,您不需要-d參數或-classpath參數。 假設您的最外層包是CalculatorServer,您應該在包含CalculatorServer的目錄中,並且所需的命令行是javah CalculatorServer.NativeMethodsCalculator

你沒有嘗試過:只需要/bin/不要進入CalculatorServer )然后運行

javah -jni CalculatorServer.NativeMethodsCalculator

這是如何運行它的唯一方法 只需看看javah doc 它在概要中說“ 完全合格的類名 ”。 完全合格 ”意味着完整的類路徑 你只給它類名。 到目前為止,它只對您有用,因為您使用的是默認包,這意味着您的完全限定類名等於裸類名。

選項-d-o不影響類查找,只影響本機結果的存儲。 您嘗試的所有變體對您的錯誤沒有任何影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM