NDK开发遇到的三个错误:'javah' 不是内部或外部命令,编码GBK的不可映射字符, 程序包XX.XX不存在


配置JNI的时候遇到了如?错误

'javah' 不是内部或外部命令,也不是可运行的程序

实际上并不是Android Studio的问题,环境变量配置也没有问题,

我到我的JDK的bin目录下

发现并没有javah这个文件

脑补了一下,绝对是Java自己的问题!

 

果不其然,jdk版本太新了,orz

在jdk10及以上的版本中,已经删除了javah,使用"javac -h"命令替代"javah"

所以

javah -jni com.example.ndk.MainActivity

应该改为

javac -h . com\example\ndk\MainActivity.java

javac -h -jni com\example\ndk\MainActivity.java
似乎也是可以的

有两点需要注意

首先,要给后缀名,因为javac必须得...否则如?

其次,目录结构要换成用“\”来表示的形式,否则无法找到


编码GBK的不可映射字符

除此之外不建议有中文...哪怕是注释...

或者手动补上编码

-encoding UTF-8

完整即

javac -encoding UTF-8  -h . com\example\ndk\MainActivity.java

或javac -encoding UTF-8 com\example\ndk\MainActivity.java -h JniH

写法挺多的....


 程序包XX.XX不存在

还遇到如?错误

16 个错误全文如下:

C:\Users\lin22\AndroidStudioProjects\NDK\app\src\main\java>javac -encoding UTF-8  -h . com\example\ndk\MainActivity.java
com\example\ndk\MainActivity.java:3: 错误: 程序包android.support.v7.app不存在
import android.support.v7.app.AppCompatActivity;
                             ^
com\example\ndk\MainActivity.java:4: 错误: 程序包android.os不存在
import android.os.Bundle;
                 ^
com\example\ndk\MainActivity.java:5: 错误: 程序包android.view不存在
import android.view.View;
                   ^
com\example\ndk\MainActivity.java:6: 错误: 程序包android.widget不存在
import android.widget.EditText;
                     ^
com\example\ndk\MainActivity.java:7: 错误: 程序包android.widget不存在
import android.widget.TextView;
                     ^
com\example\ndk\MainActivity.java:9: 错误: 找不到符号
public class MainActivity extends AppCompatActivity {
                                  ^
  符号: 类 AppCompatActivity
com\example\ndk\MainActivity.java:11: 错误: 找不到符号
    private EditText number1, number2;
            ^
  符号:   类 EditText
  位置: 类 MainActivity
com\example\ndk\MainActivity.java:12: 错误: 找不到符号
    private TextView sum_text;
            ^
  符号:   类 TextView
  位置: 类 MainActivity
com\example\ndk\MainActivity.java:15: 错误: 找不到符号
    protected void onCreate(Bundle savedInstanceState) {
                            ^
  符号:   类 Bundle
  位置: 类 MainActivity
com\example\ndk\MainActivity.java:27: 错误: 找不到符号
    public void sum_button(View view) {
                           ^
  符号:   类 View
  位置: 类 MainActivity
com\example\ndk\MainActivity.java:14: 错误: 方法不会覆盖或实现超类型的方法
    @Override
    ^
com\example\ndk\MainActivity.java:16: 错误: 找不到符号
        super.onCreate(savedInstanceState);
        ^
  符号:   变量 super
  位置: 类 MainActivity
com\example\ndk\MainActivity.java:17: 错误: 程序包R不存在
        setContentView(R.layout.activity_main);
                        ^
com\example\ndk\MainActivity.java:18: 错误: 程序包R不存在
        number1 = findViewById(R.id.number1);
                                ^
com\example\ndk\MainActivity.java:19: 错误: 程序包R不存在
        number2 = findViewById(R.id.number2);
                                ^
com\example\ndk\MainActivity.java:20: 错误: 程序包R不存在
        sum_text = findViewById(R.id.sum_text);
                                 ^
16 个错误
 

查了一下发现是classpath的环境变量没配好,我记得以前好像配过的?

结果看了一下真的没配....好诡异


这部分参考了:http://blog.sina.com.cn/s/blog_49b3ba190102z0ah.html

感谢一下

 

按照习惯

建一个ANDROID_HOME变量值为SDK的路径

修改classpath

加入错误提示中缺少的程序包,网上一般会告诉你贴三个,三个就三个吧 2333

%ANDROID_HOME%\platforms\android-22\android.jar;

(好像说不能用22以上的,但是又必须得至少22)
%ANDROID_HOME%\extras\android\support\v4\android-support-v4.jar;
%ANDROID_HOME%\extras\android\support\v7\appcompat\libs\android-support-v7-appcompat.jar;

 

果不其然,我这个路径下这个jar包也不存在...

http://blog.sina.com.cn/s/blog_49b3ba190102z0af.html

倒是有一个仓库,

一路进去,倒是可以找到类似的,

解压这个文件,有个jar就是了...

然后我寻思环境变量还得改

 

 

  • 14
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
您好!关于您提到的问题,'ndk-build' 不是内部外部命令,也不是可运行程序错误通常是由于未正确设置 Android NDK 环境变量导致的。请确保已正确安装 Android NDK,并按照以下步骤进行检查和设置: 1. 首先,确认您已成功下载并安装了最新版本的 Android NDK。您可以从 Android 开发者网站(https://developer.android.com/ndk)下载。 2. 打开您的操作系统的环境变量设置。如果您使用的是 Windows 操作系统,请按 Win + X 并选择“系统”>“关于”>“高级系统设置”>“环境变量”;如果您使用的是 macOS,打开终端并输入以下命令:`open ~/.bash_profile`。 3. 在系统或用户环境变量中,检查是否已设置名为 `ANDROID_NDK_HOME` 或 `NDK_HOME` 的变量。如果不存在,请点击“新建”(Windows)或手动添加以下行(macOS): - Windows: 变量名:`ANDROID_NDK_HOME` 变量值:NDK 的安装路径(例如:C:\android-ndk) - macOS: `export NDK_HOME=/path/to/ndk` 4. 确保将 NDK 的 `bin` 目录添加到您的 PATH 环境变量中。在系统或用户环境变量中,找到名为 PATH 的变量,并添加以下路径(使用正确的 NDK 安装路径): - Windows: `%ANDROID_NDK_HOME%\bin` - macOS: `$NDK_HOME/bin` 5. 保存更改并关闭终端或命令提示符窗口。 6. 重新打开终端或命令提示符,并在运行 'ndk-build' 命令之前,确保您的环境变量已正确设置。 请注意,这只是一般的设置步骤,具体步骤可能因您的操作系统和安装方式而有所不同。如果您仍然遇到问题,请提供更多详细信息,以便我能够为您提供更准确的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云无心鸟知还

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值