开发者社区> 问答> 正文

java web项目如何调用.so文件?

蛮大人123 2016-02-26 11:48:39 2754

我这里有一个libhf_test.so文件,开始是放在android project里边的,调用什么的都没有问题。
现在新加了一个需求:把这个libhf_test.so文件放到web project项目中
然后我就写了个小小的测试类
screenshot
然后运行报错了
java.lang.UnsatisfiedLinkError: no hfswpay in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1030)
at com.umpay.huafubao.util.AppUtil.(AppUtil.java:8)
Exception in thread "main"
把so文件放到java.library.path各个路径中的,有用System.load("路径/libhf_test.so")的,都不行啊
System.load("路径/libhf_test.so")会报文件类型的错,好像只能加载.dll文件
然而我就只想用System.loadLibrary()这个方法了,
adnroid工程可以直接调用是因为,它本身已经做好了配置
我想web工程也需要做一些ndk的配置才能使用吧? 希望大家能指点一二
另外:还有说要用到.h头文件的,我的开发工具myeclipse,用Java,不是vs

分享到
取消 提交回答
全部回答(4)
  • 一生有你llx
    2019-07-17 18:48:06

    so是linux库,dll是windows库将你的代码扔到linux上去,执行java命令运行即可。另system.loadLibrary是按照c++项目名载入,system.load是按照路径载入。

    0 0
  • nothingfinal
    2019-07-17 18:48:06

    so是linux库,dll是windows库将你的代码扔到linux上去,执行java命令运行即可。另system.loadLibrary是按照c++项目名载入,system.load是按照路径载入。

    0 0
  • paji
    2019-07-17 18:48:06
    .so 就是share object,是linux系统里面的动态链接库,就是说程序在运行的时候去调用的。如果java需要使用.so文件有几种方式,第一种就是直接利用JNI机制调用 .so文件,还有一种是通过ips(进程间通信,socket,队列,数据库都可以)加一层C/C++实现的代理层,然后C/C++直接调用即可。
    0 0
  • 蛮大人123
    2019-07-17 18:48:06

    so是linux库,dll是windows库将你的代码扔到linux上去,执行java命令运行即可。另system.loadLibrary是按照c++项目名载入,system.load是按照路径载入。

    0 0
添加回答

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题