jnative的使用始终报错

org.xvolks.jnative.exceptions.NativeException:Functionaddnotfoundatorg.xvolks.jnative... org.xvolks.jnative.exceptions.NativeException: Function add not found
at org.xvolks.jnative.JNative.nLoadLibrary(Native Method)
at org.xvolks.jnative.JNative.<init>(JNative.java:348)
at org.xvolks.jnative.JNative.<init>(JNative.java:269)
at NewTest.main(NewTest.java:13)
JNativeCpp.dll放在对应的位置了,可以确定的是调用的库中存在该函数,请高手指教

附代码:
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;

public class NewTest
{
public static void main(String[] args) throws NativeException, IllegalAccessException
{
JNative n = null;
try
{
//System.loadLibrary("jnative");
n = new JNative("jnative.dll", "add");
n.setRetVal(Type.INT);
n.setParameter(0 ,1) ;
n.setParameter(1, 2);
n.invoke();
System.out.println(n.getDLLName());
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
if(n!=null)
n.dispose();
}
}
}
展开
 我来答
怀新垒fb
2009-04-08 · TA获得超过378个赞
知道小有建树答主
回答量:391
采纳率:100%
帮助的人:364万
展开全部

肯定是路径问题

我的路径看图

public class HelloWorld {

 //本地方法

 public native void sayHello(User u);

 //加载动态库

 static {

  System.loadLibrary("hello");

 }

 //本类方法

 public void sayHello(String str){

  System.out.println(str);

 }

 /**

  * @param args

  */

 public static void main(String[] args) {

  // TODO Auto-generated method stub

  HelloWorld hw = new HelloWorld();

  //java

  hw.sayHello("Hello World for java!");

  //jni

  User u = new User(10,"zou");

  hw.sayHello(u);

 }

}

射手pa66
2015-11-14 · TA获得超过319个赞
知道小有建树答主
回答量:182
采纳率:75%
帮助的人:63.7万
展开全部
  jnative的使用始终报错是路径出现问题
  我的路径看图
  public class HelloWorld {
  //本地方法
  public native void sayHello(User u);
  //加载动态库
  static {
  System.loadLibrary("hello");
  }
  //本类方法
  public void sayHello(String str){
  System.out.println(str);
  }
  /**
  * @param args
  */
  public static void main(String[] args) {
  // TODO Auto-generated method stub
  HelloWorld hw = new HelloWorld();
  //java
  hw.sayHello("Hello World for java!");
  //jni
  User u = new User(10,"zou");
  hw.sayHello(u);
  }
  }
  1、环境设置。
  JNative的调试信息需要打开才能更清楚些,要不总是说没加载库,跟没说一样。
  System.setProperty("jnative.debug", "true");
  如果调试信息里有System.LoadLibrary(),说明没有加载JNativeCpp.dll,指定全路径即可,双斜杠哦。
  System.setProperty("jnative.loadNative", "D:\\Test\\JNativeCpp.dll");
  2、lib库路径问题
  windows
  在windows下需要把调用的dll路径设置到环境变量PATH中,除非你不介意拷到win32中,dll依赖的库也得在PATH或win32中。
  linux
  linux下同样需要设置环境变量,编辑bashrc,添加 export LD_LIBRARY=so路径,依赖的库也得在PATH中,除非都放在/usr/lib/下
  3、lib库名称问题
  无论linux还是windows在JNative的构造函数中的lib库名字为库全名,包括扩展名dll、so,而且so需要包括前面的‘lib’,貌似与网上说的不太一样。
  4、资源释放问题
  有些设备需要先初始化在操作,最后释放,所有功能都分散在不同函数中,JNative需要有个静态的实例,每次创建调用函数时lib库依旧是加载的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
韦涵涵
2009-04-08 · TA获得超过3892个赞
知道大有可为答主
回答量:1034
采纳率:100%
帮助的人:1521万
展开全部
楼主没有导入JNative的Jar包..或是导入没有导入好...

楼主再仔细查一下... 我想应该是这个原因...因为

它根本就找不到 add 方法!

祝楼主早日成功!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式