yuanzh78 发表于 2012-10-09 17:09

linux下C调用jni接口jar包路径如何设置?

是这样,linux下用C调用hadoop的jni接口,jni有用到很多jar包,编译出来是个C程序,
执行C程序后,就是找不到jar包:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
      at org.apache.hadoop.conf.Configuration.<clinit>(Configuration.java:143)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
      at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
      at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
知道这些jar包都在一个目录里面
知道可以在.bash_profile里面设置,例如:
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:
等,这样就能找到jar包了,但是这样设置必须指定jar包名字,必须把所有jar包名字一个个写上去,而不能用*.jar指定所有jar包,或者用一个目录指定。

java程序是可以指定classpath目录的,但是这种C调用jni接口的就不知道了,有专家知道简单点的方法吗?
不知道应该发在C版呢还是java版还是linux版?
谢谢

yuanzh78 发表于 2012-10-10 16:44

得设置-Djava.ext.dirs=才能指定目录,没地方设置
只好一个个jar包写到claspath里

{:3_183:}
页: [1]
查看完整版本: linux下C调用jni接口jar包路径如何设置?