java jni ubuntu 环境搭建时遇到的坑

2023-05-16

1:版本不一致遇到的坑

javah的版本需要同javac的版本一致。如果版本的问题搞不定,直接用andorid  source build之后的环境即可

2:javah使用遇到的坑

jni中字段描述符可以使用javah生成

javah -jni -classpath . JNIdemo

其中 -classpath . 表示从当前目录搜索class 如果不添加会爆出来各种不太相关的错误

3:执行class时遇到的坑

如果执行class时候,需要调用 so

仅仅直接执行 java JNIdemo会报错误

Exception in thread "main" java.lang.UnsatisfiedLinkError: no native in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1124)
    at JNIDemo.<clinit>(JNIDemo.java:4)

这时需要 exprort lD_LIBRARY_PATH=.   等号两边不要有空格。用来配置so的寻找路径

4.java 静态map c

直接使用javah来生成.h文件。在c中inlcude 该 .h即可。

当然也可以将java.h 去掉。把inlude 的内容都放到c文件中

如果大型工程中无法单独compile,可以将需要map的函数单独拿出来创建一个java文件。

5:编译so文件的指令

gcc -I (jni.h的路径)  -I(jvm.h的路径) -fPIC -shared -o libnative.so native.c

eg:

 gcc -I /home/austinxin/work/SM8150-Android/android/prebuilts/jdk/jdk9/linux-x86/include -I /home/austinxin/work/SM8150-Android/android/prebuilts/jdk/jdk9/linux-x86/include/linux/ -shared -o libnative.so JNIDemo.c

eg:

gcc -I /usr/lib/jvm/java-1.11.0-openjdk-amd64/include/ -I /usr/lib/jvm/java-11-openjdk-am64/include/include/ -fPIC -shared -o libnative.so native.c

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java jni ubuntu 环境搭建时遇到的坑 的相关文章

随机推荐

  • make和cmake简要介绍

    GCC GCC xff08 GNU Compiler Collection xff0c GNU编译器套件 xff09 是由GNU开发的编程语言译器 GNU编译器套件包括C C 43 43 Objective C Fortran Java A
  • 什么是小端模式,什么是大端模式

    字节序 前言 内存在读写数据的时候 xff0c 都是以字节为单位进行读写的 xff0c 其最小的读写单位也是字节 一个字节占8位 xff0c 如果暂且只考虑无符号数 xff0c 那么其能表示的范围只有0 255这256个整数数值 如果将一个
  • 多旋翼飞行器螺旋桨动力学模型

    1 多旋翼螺旋桨动力学模型 1 1 螺旋桨几何位置基本描述1 2 螺旋桨拉力及拉力力矩1 3 螺旋桨反扭力矩1 4 螺旋桨陀螺力矩1 5 螺旋桨动力学方程 1 多旋翼螺旋桨动力学模型 1 1 螺旋桨几何位置基本描述 坐标系分为多旋翼机体重心
  • 雷达天线孔径与分辨率

    我们现在讲一下真实孔径的问题 xff0c 我们先有一个 最小分辨角 的概念 xff0c 根据瑞丽 xff08 Rayleigh xff09 判据 xff0c 几何光学 xff0c 物体上的一个发光点经透镜成像后得到的应是一个几何像点 而由于
  • 【新手】关于ros包安装时,提示找不到相应的ros包(unable to locate package ros- **** )

    我是在学习这个大佬的教程 xff1a 从零开始的ROS学习之仿真 43 SLAM https blog csdn net u011612364 article details 122147741 xff08 引用 xff09 时发现我自己出
  • c++实现守护进程

    概述 Linux Daemon xff08 守护进程 xff09 是运行在后台的一种特殊进程 它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件 约束 守护进程一般在系统启动时开始运行 xff0c 除非强行终止 xff0c 否
  • linux C++ 环境下的ActiveMQ学习

    ActiveMQ 1 概述 ActiveMQ 是Apache出品 xff0c 最流行的 功能强大的即时通讯和集成模式的开源服务器 ActiveMQ 是一个完全支持JMS1 1和J2EE 1 4规范的 JMS Provider实现 提供客户端
  • Django与mysql建立长连接

    问题 xff1a 每次请求操作mysql数据库都会从新创建一个connect实例 xff0c 大大降低了数据处理的效率 还是django不够熟悉 解决办法 xff1a 自Django1 6版本后 xff0c 官方提供支持长连接 xff0c
  • Python ActiveMQ 消费者实现

    encoding utf 8 import stomp import sys import thread Create your tests here topic name 61 39 topic your topic name 39 br
  • Django 服务启动2次问题

    首先 xff0c 我们的操作如下 xff1a 一 命令行的启动服务 xff1a python manage py runserver 0 0 0 0 8000 二 服务启动行为 try os environ setdefault 34 DJ
  • Django settings.py配置总结

    1 版本 xff1a 1 8 9 2 解决数据库时间和当前系统时间不一致问题 设置USE TZ 61 False 3 时区配置 xff1a TIME ZONE 61 39 Asia Shanghai 39 4 静态文件js css等的引用路
  • Extern关键字在vscode中不生效的解决办法

    今天回顾extern关键字的时候遇到一个问题 a c里的代码 b c里的代码 这么简单的几个代码 vscode竟然给我报错 为什么 抱着这个问题去逛了下csdn 终于让我找到了问题所在 原来vscode默认只能对单文件编译 即使俩文件在同一
  • 头文件、源文件 及extern的使用

    头文件与源文件的作用 1 编译器的工作过程 简单的说其实要理解C文件与头文件 xff08 即 h xff09 有什么不同之处 xff0c 首先需要弄明白编译器的工作过程 xff0c 一般说来编译器会做以下几个过程 xff1a 1 预处理阶段
  • 从零开始的三维激光雷达SLAM教程第二讲(搭建Gazebo仿真环境,并添加动态障碍物)

    文章目录 引言第二节 xff1a 搭建仿真环境下载velodyne激光模拟功能包安装turtlebot3模拟器安装三维激光雷达到turtlebot3上构建Gazebo地图添加动态障碍物操作机器人建图最终效果 引言 毕业设计打算做三维激光SL
  • 一个简单的基础通信协议的设计与实现

    一个简单的基础通信协议的设计与实现 一种常见的通信协议格式搭建串口收发环境配置STM32CubeMX添加USART部分代码 通信协议的实现 不同设备之间的通信 xff0c 都需要设计自己的通信协议 为了保证设备与设备之间的数据的稳定传输 x
  • 串口调试助手之间通信和接受、发送数据

    最近在用串口调试助手的时候在网上找了好多资料和教程都没有一个完整的 xff0c 就来写个完整的串口调试助手资料给刚入门或者刚接触的小白 xff0c 希望有所帮助 xff01 1 准备好串口调试助手 和 虚拟串口驱动 软件VirtualSer
  • win10下vs2019编译使用boost库v1_75_0

    boost介绍 Boost库是为C 43 43 语言标准库提供扩展的一些C 43 43 程序库的总称 boost是一个准标准库 xff0c 相当于STL的延续和扩充 xff0c 它的设计理念和STL比较接近 xff0c 都是利用泛型让复用达
  • vscode格式化C++代码方法

    参考 xff1a https blog csdn net wydxry article details 125191171 格式操作 解决方法 xff1a 按下组合键ctrl 43 shift 43 p 在弹出的搜索窗口中输入format
  • OpenCV基本介绍和安装

    OpenCV是一个通用 开源 功能强大的图像处理和计算机视觉库 官方网站 xff1a Home OpenCV 1999年 加里 布拉德斯基在Intel公司创建了计算机视觉库 xff08 Computer Vision Library xff
  • java jni ubuntu 环境搭建时遇到的坑

    1 xff1a 版本不一致遇到的坑 javah的版本需要同javac的版本一致 如果版本的问题搞不定 xff0c 直接用andorid source build之后的环境即可 2 xff1a javah使用遇到的坑 jni中字段描述符可以使