繁体   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