java程序在linux下调用共享库的问题 我在linux系统里编写的java程序中,使用如下代码调用共享库:static{ System.loadLibrary("libspeak.so"); }请问libspeak.so应该放在什么位置,是否需要设置环境变量? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我把libspeak.so放在/usr/lib、/lib和LD_LIBRARY_PATH环境变量里的路径下运行时都会出现错误:java.lang.UnsatisfiedLinkError:libspeak.so:file not found.请问应该放在哪里?谢谢! 我是在linux里用gcj编译的,没有安装JVM.linux里的共享库都是放在/usr/lib和/lib里的,我试过都不行,不知道System.loadLibrary()是在哪里查找共享库. 这是jdk里面ClassLoader的源代码,System.loadLibrary()最终调用的是这个方法.看起来应该是classpath和java的一些系统目录 // Invoked in the java.lang.Runtime class to implement load and loadLibrary. static void loadLibrary(Class fromClass, String name, boolean isAbsolute) { ClassLoader loader = (fromClass == null) ? null : fromClass.getClassLoader(); if (sys_paths == null) { usr_paths = initializePath("java.library.path"); sys_paths = initializePath("sun.boot.library.path"); } if (isAbsolute) { if (loadLibrary0(fromClass, new File(name))) { return; } throw new UnsatisfiedLinkError("Can't load library: " + name); } if (loader != null) { String libfilename = loader.findLibrary(name); if (libfilename != null) { File libfile = new File(libfilename); if (!libfile.isAbsolute()) { throw new UnsatisfiedLinkError( "ClassLoader.findLibrary failed to return an absolute path: " + libfilename); } if (loadLibrary0(fromClass, libfile)) { return; } throw new UnsatisfiedLinkError("Can't load " + libfilename); } } for (int i = 0 ; i < sys_paths.length ; i++) { File libfile = new File(sys_paths[i], System.mapLibraryName(name)); if (loadLibrary0(fromClass, libfile)) { return; } } if (loader != null) { for (int i = 0 ; i < usr_paths.length ; i++) { File libfile = new File(usr_paths[i], System.mapLibraryName(name)); if (loadLibrary0(fromClass, libfile)) { return; } } } 要不你放到jre的bin目录下面看看里面有很多库 判断一个文件是否为utf-8格式的java代码,自己看吧 java中“线程”的用处? ava正则匹配问题 请问:在unix平台下如何把新浪的天气预报自动录入到数据库中? 关于socket的小问题??? 跪求一个关于字符匹串配的算法问题 求助:String b="123";和String c=new String("123");的区别! 高手们帮我解答一下呀,急!!!! 关于流的菜鸟问题 哪位有jbwheel(让JBuilder支持鼠标滚轮的东东) 又是ArrayList的小问题! 100分求解有关javax.comm包的应用
看起来应该是classpath和java的一些系统目录 // Invoked in the java.lang.Runtime class to implement load and loadLibrary.
static void loadLibrary(Class fromClass, String name,
boolean isAbsolute) {
ClassLoader loader =
(fromClass == null) ? null : fromClass.getClassLoader();
if (sys_paths == null) {
usr_paths = initializePath("java.library.path");
sys_paths = initializePath("sun.boot.library.path");
}
if (isAbsolute) {
if (loadLibrary0(fromClass, new File(name))) {
return;
}
throw new UnsatisfiedLinkError("Can't load library: " + name);
}
if (loader != null) {
String libfilename = loader.findLibrary(name);
if (libfilename != null) {
File libfile = new File(libfilename);
if (!libfile.isAbsolute()) {
throw new UnsatisfiedLinkError(
"ClassLoader.findLibrary failed to return an absolute path: " + libfilename);
}
if (loadLibrary0(fromClass, libfile)) {
return;
}
throw new UnsatisfiedLinkError("Can't load " + libfilename);
}
}
for (int i = 0 ; i < sys_paths.length ; i++) {
File libfile = new File(sys_paths[i], System.mapLibraryName(name));
if (loadLibrary0(fromClass, libfile)) {
return;
}
}
if (loader != null) {
for (int i = 0 ; i < usr_paths.length ; i++) {
File libfile = new File(usr_paths[i],
System.mapLibraryName(name));
if (loadLibrary0(fromClass, libfile)) {
return;
}
}
}