Android 4.4 build err:OSError: [Errno 2] No such file or directory

本文介绍了解决在生成JNI头文件过程中出现的错误方法。主要步骤包括确保安装了正确的JDK版本,具体为JDK 6,并且需要确保相关工具如javap等能够被正确调用。此外还提到了对于64位操作系统所需安装的一系列开发工具。

错误信息:

Gyp action: Generating JNI bindings from XXXXX.class (out/target/product/XXXXX_jni.h)
Traceback (most recent call last):
  File "../../base/android/jni_generator/jni_generator.py", line 1065, in <module>
    sys.exit(main(sys.argv))
  File "../../base/android/jni_generator/jni_generator.py", line 1061, in main
    options.optimize_generation)
  File "../../base/android/jni_generator/jni_generator.py", line 996, in GenerateJNIHeader
    jni_from_javap = JNIFromJavaP.CreateFromClass(input_file, namespace)
  File "../../base/android/jni_generator/jni_generator.py", line 507, in CreateFromClass
    stderr=subprocess.PIPE)
  File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory
make: *** [out/target/product/XXXXX_jni.h] 错误 1
make: *** 正在等待未完成的任务....

解决:

1. 首先需要jdk-6工具

2. path-to-jdk6/bin/ 目录下有八个工具:jar, jarsigner, java, javah, javap, javac, javaws, javadoc, 都需要安装(或者将该目录添加到PATH中也可):

sudo  update-alternatives --install XXXX  XXX XXXXX XX

3. 64-bit OS 需要安装:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev g++-multilib lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev libsdl-dev sun-java5-jdk libesd0-dev libwxgtk2.6-dev libncurses5-dev zlib1g-dev tftpd uboot-mkimage

### Python 中 `FileNotFoundError` 错误解决方案 当遇到 `FileNotFoundError: [Errno 2] No such file or directory: 'temp.mp4'` 这样的错误时,通常是因为程序尝试访问不存在的文件路径。为了有效解决问题,可以从以下几个方面入手: #### 1. 验证文件路径是否存在 确保指定的文件确实存在于给定路径下。可以使用 `os.path.exists()` 函数来验证文件的存在性。 ```python import os file_path = 'temp.mp4' if not os.path.exists(file_path): print(f"The file {file_path} does not exist.") else: print(f"The file {file_path} exists.") ``` 如果文件不在当前工作目录中,则需要提供绝对路径或相对路径[^1]。 #### 2. 使用绝对路径代替相对路径 有时相对路径可能会因为脚本执行位置不同而失效。建议使用绝对路径来避免此类问题。 ```python absolute_file_path = "/home/user/videos/temp.mp4" with open(absolute_file_path, 'rb') as f: content = f.read() ``` 对于 Windows 用户来说,注意反斜杠 `\` 的转义字符特性,或者采用原始字符串前缀 `r` 来定义路径字符串[^2]。 #### 3. 设置正确的当前工作目录 可以通过设置当前的工作目录到目标文件所在的文件夹来简化操作。 ```python import os target_directory = "/path/to/directory/" os.chdir(target_directory) try: with open('temp.mp4', 'rb') as video_file: data = video_file.read() except FileNotFoundError as e: print(e) ``` #### 4. 处理异常情况 即使采取了上述措施,在某些情况下仍然可能出现意外状况。因此应该加入适当的异常处理机制以增强代码健壮性。 ```python from pathlib import Path video_path = Path("temp.mp4") try: if video_path.is_file(): with video_path.open(mode='rb') as vid_f: binary_data = vid_f.read() else: raise Exception(f"{str(video_path)} is not a valid file path") except (OSError, IOError) as err: print(err) finally: # 清理资源或其他必要的收尾工作 pass ``` 通过以上方法能够有效地排查并解决 `FileNotFoundError` 异常。值得注意的是,始终要确认文件的真实存在性和路径准确性,并考虑环境因素的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值