[英]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.