无敌小贱 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是按照路径载入。

    评论

报告相同问题?

悬赏问题

  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试