javap. . , , , , .
#!/bin/bash
CLASS_NAME='javap -cp $2 $1 | \
grep -v "Compiled from" | \
grep "public class" | \
cut -f3 -d" " | \
awk -F"." '{ print $NF }''
PACKAGE_NAME='javap -cp $2 $1 | \
grep -v "Compiled from" | \
grep "public class" | \
cut -f3 -d" " | \
sed s/\.${CLASS_NAME}$//'
DIR_NAME='echo $PACKAGE_NAME | sed 's|\.|/|g''
mkdir -p java_jni/${DIR_NAME}
JAVA_FILE_NAME="java_jni/${DIR_NAME}/${CLASS_NAME}.java"
echo "package ${PACKAGE_NAME};" > ${JAVA_FILE_NAME}
echo "public class ${CLASS_NAME} {" >> ${JAVA_FILE_NAME}
javap -cp $2 $1 | grep "native" | while read line; do
param=0
comma='echo $line | grep "," | wc -l'
while [ $comma -gt 0 ]; do
line='echo $line | sed "s/,/ param_${param}|/"'
let param=param+1
comma='echo $line | grep "," | wc -l'
done
line='echo $line | sed "s/)/ param_${param})/" | sed 's/|/,/g''
echo " $line" >> ${JAVA_FILE_NAME}
done
echo "}" >> ${JAVA_FILE_NAME}
mkdir -p c_header
javac -h c_header ${JAVA_FILE_NAME}
, .
, , Java 10 , Java, , - . , .