Java访问Hadoop编写翻译和平运动作遇到的各种难题和消除方案:

C程序访谈Hadoop运行时遇见的各类主题材料以致施工方案

编写翻译单独模块错误

单身编写翻译libcore模块时,会产出如下的谬误:

ninja: error: 'out/host/common/obj/JAVA_LIBRARIES/bouncycastle-hostdex_intermediates/classes.jack', needed by 'out/host/common/obj/JAVA_LIBRARIES/core-tests-hostdex_intermediates/classes.dex', missing and no known rule to make it

解决办法是,在libcore模块下的Android.mk中参预上面那句:

export LIBCORE_SKIP_TESTS = false:$LIBCORE_SKIP_TESTS

那句话的意思是跳过test模块编写翻译,之后就能够平常编译libcore模块

只好戏弄一下Android 7.0的编写翻译系统,Android
7.0是用Ninja再加上Jack来实行编写翻译,速度上以为不太分明,可是占用财富超多,相仿的机器编写翻译Android
5.1时,使用make -j32,其余程序基本不会受影响,可是在Android
7.0下,若是应用make -j32事后,整个计算机卡的跟**C程序访问Hadoop运行时遇到的各种问题以及解决方案,0源码遇到的问题和解决方案。一样…

问题1:

主题材料1:当编译通过后,运转时,会师世:

ADB 错误

编写翻译完结后,使用adb reboot bootloader时会报如下错误:

error: insufficient permissions for device

报错的相同的时候,会在上面提议前往官网查阅相应文书档案,查看文档可以预知清除办法是:
编辑/etc/udev/rules.d/51-android.rules文件,在里边加多当前三番五次的配备,格式为:
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev"
其中,
ATTR{idVendor}的值应该是日前设备创造商相对应的值,这里笔者的装置是Nexus
6,所以相呼应的值就是22b8, 最终推行:

chmod a+r /etc/udev/rules.d/51-android.rules

周边设备对应USB Vendor ID

公司 USB Vendor ID
Google 18d1
HTC 0bb4
Huawei 12d1
Lenovo 17ef
LG 1004
Motorola 22b8
Samsung 04e8
Sony 054c
ZTE 19d2

地点是局地常用厂家设备的USB Vendor ID,
完整的列表能够查看官网

基于官方网站辅导,设置好rules之后应该就足以了,若是照旧不得以,那么很简短,拔了双重插一下usb….

在javac编写翻译时,老是贫乏依赖的类,

hadoop@springwater-Aspire-4743:/usr/local/hadoop/test$ ./test
Exception in thread “main” java.io.IOException: Mkdirs failed to create
/my
 at
org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:378)
 at
org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:364)
 at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:555)
 at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:536)
Call to
org.apache.hadoop.conf.FileSystem::create((Lorg/apache/hadoop/fs/Path;ZISJ)Lorg/apache/hadoop/fs/FSDataOutputStream;)
failed!
Failed to open /my/t.txt for writing!

Build

  1. device/moto/shamu/aosp_shamu.mk中能够定义PRODUCT_MODULE,
    该值会展现在Settings中的关于手提式有线电话机的型号风流罗曼蒂克栏
  2. build/core/version_defaults.mk中得以改正BUILD_NUMBER,该值会来得在Settings中的版本号黄金年代栏

赶尽杀绝方案:

案由解析,读写权限远远不足。

故此本身然后写了二个本子,将富有的.jar文件都加载到CLASSPATH变量中,就ok了。

消除措施:

问题2:

sudo ./test

而实操中冒出文件操作的权限不足。因为用hadoop
shell放进去的暗中同意权限是rw-r–r–,所以作为程序对象就未有操作权限。

可是又有新的主题材料:

斩尽杀绝方案:

hadoop@springwater-Aspire-4743:/usr/local/hadoop/test$ sudo ./test
Environment variable CLASSPATH not set!
Environment variable CLASSPATH not set!
Failed to open /my/t.txt for writing!

java之从前增加sudo权限就能够。假设如故十三分,那只可以:/bin/hadoop fs -chmod
777 文件名

难题2: sudo env发掘笔者在~/.bashrc中定义的情状变量CLASSPATH未有被sudo继承。

本身的shell脚本是这么写的。(jardir是自家先将有着的jar文件cp到了该目录卡塔尔国

所以sudo ./test会展现CLASSPATH未有定义

#!/bin/sh
FILES=/usr/local/hadoop/jardir/*
v=””
for f in $FILES
do
    v1=${f}
    v2=${v1}:${v}
    v=${v2}
done

解决措施:

echo “$v”

在/etc/sudoers中修改:

相关文章