Java Native Interface(JNI)的一个组成部分是通过C头桥接JVM代码和本机代码。生成这些头文件的方法过去非常简单:只需在类文件上调用命令行实用程序javah
即可。然后,此过程将为使用native
修饰符标记的任何方法生成原型。
从Java 10开始,javah
实用程序has been removed及其建议的替换是javac的新标志“-h”。如果有可用的Java源文件,则替换可以正常工作,但是只有编译的类文件可用时才会出现问题。 (引发这个问题的问题是我正在尝试从Scala源生成JNI绑定。我当前的方法是首先编译它们然后在生成的类文件上运行javah。)
在只有已编译的类文件可用的情况下,有没有办法生成C头文件,类似于javah
以前的方式?
答案 0 :(得分:5)
您可以随时通过df = df.groupby('case').agg(['mean','sem']).drop(('condition','sem'), axis=1)
df.columns = df.columns.map('_'.join)
df = df.reset_index()
print (df)
case condition_mean var_a_mean var_a_sem var_b_mean var_b_sem
0 1 1.5 0.900 0.020 0.18 0.03
1 2 1.5 0.845 0.055 0.13 0.03
2 3 1.5 0.895 0.045 0.20 0.03
。我知道我知道。这很丑陋,有很多假设,但如果您迫切需要为大量文件生成标题,它可能是唯一的选择。
javap
我敢打赌它可以变得更漂亮。
对我而言,现在,当我慢慢开始考虑不可避免地转向Java 10时,以及所有这些情况,我可能会对不存在的Java源代码感到惊讶,我认为在某些工具处理时并不是一个坏主意我的处置。以防万一。
答案 1 :(得分:5)
我们可以使用gjavah生成JNI头文件。
答案 2 :(得分:-3)
我认为最好的解决方案是安装一个jdk8。 无需卸载jdk10,只需修改环境变量即可。