求生之路2跳出安装却打不开,跳出 Could not load lib...

Hadoop***lzo-出现Could not load native gpl library问题解决_服务器应用_Linux公社-Linux系统门户网站
你好,游客
Hadoop***lzo-出现Could not load native gpl library问题解决
来源:Linux社区&
作者:wanglinzi
此篇是接着***lzo的续篇 &,主要讲一下***过程中出现的问题及解决方案。
Could not load native gpl library
异常堆栈:
12/11/07 10:15:02 ERROR lzo.GPLNativeCodeLoader: Could not load native gpl library&
java.lang.UnsatisfiedLinkError: no gplcompression in java.library.path&
& & at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1738)&
& & at java.lang.Runtime.loadLibrary0(Runtime.java:823)&
& & at java.lang.System.loadLibrary(System.java:1028)&
& & at pression.lzo.GPLNativeCodeLoader.&clinit&(GPLNativeCodeLoader.java:32)&
& & at pression.lzo.LzoCodec.&clinit&(LzoCodec.java:71)&
& & at java.lang.Class.forName0(Native Method)&
& & at java.lang.Class.forName(Class.java:247)&
& & at org.apache.Hadoop.conf.Configuration.getClassByName(Configuration.java:943)&
& & at org.apache.pressionCodecFactory.getCodecClasses(CompressionCodecFactory.java:89)&
& & at org.apache.pressionCodecFactory.&init&(CompressionCodecFactory.java:134)&
& & at com.twitter.elephantbird.mapreduce.input.LzoRecordReader.initialize(LzoRecordReader.java:61)&
& & at com.twitter.elephantbird.mapreduce.input.LzoBinaryB64LineRecordReader.initialize(LzoBinaryB64LineRecordReader.java:79)&
& & at org.apache.Hadoop.mapreduce.lib.input.DelegatingRecordReader.initialize(DelegatingRecordReader.java:80)&
& & at org.apache.Hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:450)&
& & at org.apache.Hadoop.mapred.MapTask.runNewMapper(MapTask.java:645)&
& & at org.apache.Hadoop.mapred.MapTask.run(MapTask.java:322)&
& & at org.apache.Hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:210)&
如果是按照上一篇()来做的,出现以上异常的原因大多是以下两种情况:
1.没有拷贝lzo本地库到相应目录造成的
在目录/opt/modules/hadoop/hadoop-1.0.2/lib/native/Linux-i386-32下需要有libhadoop*.so和libgplcompression*.so库。
-rw-r--r--. 1 hadoop hadoop& 76938 Sep 30 18:17 libgplcompression.a-rw-rw-r--. 1 hadoop hadoop&
1140 Sep 30 18:17 libgplcompression.la-rwxrwxr-x. 1 hadoop hadoop& 59229 Sep 30 18:17 libgplcompression.so-rwxrwxr-x. 1 hadoop hadoop& 59229 Sep 30 18:17 libgplcompression.so.0-rwxrwxr-x. 1 hadoop hadoop& 59229 Sep 30 18:17 libgplcompression.so.0.0.0-rw-rw-r--. 1 hadoop hadoop 301066 Jul 15 05:40 libhadoop.a-rw-rw-r--. 1 hadoop hadoop& & 873 Jul 15 05:40 libhadoop.la-rw-rw-r--. 1 hadoop hadoop 199000 Jul 15 05:40 libhadoop.so-rw-rw-r--. 1 hadoop hadoop 199000 Jul 15 05:40 libhadoop.so.1-rw-rw-r--. 1 hadoop hadoop 199000 Jul 15 05:40 libhadoop.so.1.0.0
2.没有正常设置LD_LIBRARY_PATH
&property&& & & &
&name&mapred.child.env&/name& & & & &
&value&LD_LIBRARY_PATH=/opt/modules/hadoop/hadoop-1.0.2/lib/native/Linux-i386-32&/value& &&/property&
在mapred-site.xml 配置里需要配置本地库路径。
linux共享库位置配置,Java程序在启动时系统初始化java.library.path属性。
LD_LIBRARY_PATH环境变量主要是用于指定动态链接器(ld)查找ELF可执行文件运行时所依赖的动态库(so)的路java.library.path径,其内容是以冒号分隔的路径列表。ld链接器将优先在该变量设置的路径中查找,若未找到则在标准库路径/lib和/usr/lib中继续搜索。
所以有几种方式来设置LD_LIBRARY_PATH,第一是环境变量,第二是更改/etc/ld.so.conf 文件。
写了一段程序来测试:
import java.util.Pimport java.util.S
public class TestLD {&&public static void main(String[] args) {& System.out.println(System.getProperty("java.library.path"));& Properties props = System.getProperties();& Set&Object& keys = props.keySet();& for (Object key : keys) {& &if (((String) key).equals("java.library.path"))& & System.out.println(System.getProperty("java.library.path"));& &if (((String) key).equals("."))& & System.out.println(System.getProperty("."));
& }& try {& &//loading gplcompression...& &System.loadLibrary("gplcompression");& &System.out.println("Load gplcompression success");& && &System.mapLibraryName("lzohadoop");& } catch (Throwable t) {& &System.out.println("Error");& &t.printStackTrace();& }& System.out.println(System.mapLibraryName("gplcompression"));&}}
可以在debug的时候动态修改java.library.path的值来测试路径可用性。
相关阅读:
13.04上搭建Hadoop环境
Ubuntu 12.10 +Hadoop 1.2.1版本集群配置
Ubuntu上搭建Hadoop环境(单机模式+伪分布模式)
Ubuntu下Hadoop环境的配置
单机版搭建Hadoop环境图文教程详解
搭建Hadoop环境(在Winodws环境下用虚拟机虚拟两个Ubuntu系统进行搭建)
更多Hadoop相关信息见 专题页面
相关资讯 & & &
& (05/04/:20)
& (03/21/:07)
& (09/28/:50)
& (03/21/:22)
& (11/24/:08)
& (09/28/:01)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款3211人阅读
EngineInitializer.initializeEngine();
com.esri.arcgis.system.AoInitialize ao = new com.esri.arcgis.system.AoInitialize();
if (ao.isProductCodeAvailable(com.esri.arcgis.system.esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB) == com.esri.arcgis.system.esriLicenseStatus.esriLicenseAvailable)
ao.initialize(com.esri.arcgis.system.esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
} catch (Exception e) {
e.printStackTrace();
一般的初始化license如上代码 在本地运行一切ok 但是放到 tomcat上做服务时 便出现Could not load native libraries 的问题
通过网上查询发现了如下的解决方法 加在上面语句的前面 &测试通过
public static void InitLiscense() {
// Get the ArcGIS Engine runtime, if it is available
String arcObjectsHome = &E:\\Program Files\\ArcGIS\\Desktop10.0\\&;
// If no runtime is available, exit application gracefully
if (arcObjectsHome == null) {
System.err
.println(&You must have the ArcGIS Engine Runtime installed in order to execute this application.&);
System.err
.println(&Install the product above, then re-run this application.&);
System.err.println(&Exiting execution of this application...&);
System.exit(-1);
// Obtain the relative path to the arcobjects.jar file
String jarPath = arcObjectsHome + &java& + File.separator + &lib&
+ File.separator + &arcobjects.jar&;
// Create a new file
File jarFile = new File(jarPath);
// Test for file existence
if (!jarFile.exists()) {
System.err
.println(&The arcobjects.jar was not found in the following location: &
+ jarFile.getParent());
System.err
.println(&Verify that arcobjects.jar can be located in the specified folder.&);
System.err
.println(&If not present, try uninstalling your ArcGIS software and reinstalling it.&);
System.err.println(&Exiting execution of this application...&);
System.exit(-1);
// Helps load classes and resources from a search path of URLs
URLClassLoader sysloader = (URLClassLoader) ClassLoader
.getSystemClassLoader();
Class&URLClassLoader& sysclass = URLClassLoader.
Method method = sysclass.getDeclaredMethod(&addURL&,
new Class[] { URL.class });
method.setAccessible(true);
method.invoke(sysloader, new Object[] { jarFile.toURI().toURL() });
} catch (Throwable throwable) {
throwable.printStackTrace();
System.err
.println(&Could not add arcobjects.jar to system classloader&);
System.err.println(&Exiting execution of this application...&);
System.exit(-1);
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:178098次
积分:1476
积分:1476
排名:千里之外
原创:23篇
转载:27篇
评论:42条
(1)(1)(1)(1)(5)(3)(2)(4)(1)(1)(1)(2)(3)(1)(1)(1)(7)(3)(3)(4)(1)(1)(1)(1)

参考资料

 

随机推荐