无敌小贱 2015-04-15 06:22 采纳率: 0%
浏览 6158

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

我这里有一个libhf_test.so文件,开始是放在android project里边的,调用什么的都没有问题。
现在新加了一个需求:把这个libhf_test.so文件放到web project项目中

然后我就写了个小小的测试类

 public class AppUtil{


    static{
        System.loadLibrary("hf_test");
    }

    //so文件中的native方法
    public native static String getNString(String paramsString);

    public static void main(String[] args) {
        System.out.println("load:"+getNString("020#2#B621#merexpand"));
    }
}

然后运行报错了
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

  • 写回答

3条回答 默认 最新

  • 清水依恋成 2015-04-15 06:25
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码