当前位置: 首页 > 面试题库 >

JAVAH找不到类(android ndk)

晏晨朗
2023-03-14
问题内容

我需要javah和android-ndk的帮助。

我尝试为本机方法生成H文件,但是 javah 表示 未找到类文件

我的目标类的绝对名称为$ PROJECT_DIRECTORY / src / bt / nativeclient /
BtnativeActivity.java,
并包含以下代码:

package bt.nativeclient;

import android.app.Activity; import android.os.Bundle; import android.widget.TextView;

public class BtnativeActivity extends Activity  {
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        TextView  tv = new TextView(this);
        tv.setText( stringFromJNI() );
        setContentView(tv);
    }

    html" target="_blank">public native String stringFromJNI();

    static 
    {
        System.loadLibrary("hello-jni");
    } 
 }

我试图从以下路径启动 javah

$(PROJECT_DIRECTORY)/bin$ javah -jni bt.nativeclient.BtnativeActivity
$(PROJECT_DIRECTORY)/jni$ javah -jni bt.nativeclient.BtnativeActivity
$(PROJECT_DIRECTORY)$ javah -jni bt.nativeclient.BtnativeActivity

我试图指定 -classpath 路径:

$PROJECT_DIRECTORY/src$ javah -classpath :. bt.nativeclient.BtnativeActivity

我尝试指定那里提到的 android.jar

$PROJECT_DIRECTORY/bin$ javah -classpath :/home/l/android-sdks/platforms/android-10/android.jar:. bt.nativeclient.BtnativeActivity

但是我总是只能得到一个结果:

error: cannot access bt.nativeclient.BtnativeActivity
class file for bt.nativeclient.BtnativeActivity not found
javadoc: error - Class bt.nativeclient.BtnativeActivity not found.
Error: No classes were specified on the command line.  Try -help.

此外,使用 -verbose 选项命令 javah 表示此命令正在将我的类隐藏在有效位置:

$PROJECT_DIRECTORY/src$ javah **-verbose** -classpath :/home/l/android-sdks/platforms/android-10/android.jar:. bt.nativeclient.BtnativeActivity
error: cannot access bt.nativeclient.BtnativeActivity
class file for bt.nativeclient.BtnativeActivity not found
javadoc: error - Class bt.nativeclient.BtnativeActivity not found.
[ Search Path: /usr/lib/jvm/java-6-openjdk/jre/lib/resources.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/jsse.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/jce.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/charsets.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/netx.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/plugin.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/rhino.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/modules/jdk.boot.jar:/usr/lib/jvm/java-6-openjdk/jre/classes/:/home/l/android-sdks/platforms/android-10/android.jar:. ]
Error: No classes were specified on the command line.  Try -help.

我想我已经失去了一些重要的东西,但是我仍然找不到解决方法。

有人可以帮我吗?


问题答案:

Android构建系统的ant部分实际上将类文件放在中bin/classes。因此,您需要$PROJECT_DIRECTORY/bin/classesjavah类路径上。例如,可以从src目录运行:

$PROJECT_DIRECTORY/src$ javah -classpath ../bin/classes bt.nativeclient.BtnativeActivity

假设您已先将Java代码编译到相应的类文件中。您可以通过查看bin / classes目录中的内容进行检查-它应该包含bt目录,该目录位于包名称的顶部。



 类似资料:
  • 问题内容: [在JNI中使用](http://codingdict.com/questions/155815 -> Javah错误时 …并且-> android-javah找不到我的班级 …我仍然无法上班。特别… 我的java类位于此处: 从这个资料夹… 我试过跑步 …我也在包含文件的实际文件夹中尝试过… 都给平常… 有任何想法吗? 附带的详细日志在搜索路径中显示了一些奇怪的东西。 注意,似乎没有

  • 问题内容: 我已经安装了两个jdk-jdk 1.5和jdk 1.8。我有以下Ant build.xml配置文件: 在安装jdk1.8之前,从Eclipse调用的Ant成功编译了所有源代码。但是现在,我有以下错误消息: 我的JAVA_HOME和JRE_HOME: 并在Eclipse JRE中将其设置为1.5。Java 1.8在安装过程中会设置一些配置吗? 问题答案: 已知低于1.9.0的Apache

  • 我已经安装了两个JDK--JDK1.5和JDK1.8。我有以下Ant build.xml配置文件: 在安装JDK1.8之前,从Eclipse调用的Ant成功地编译了所有源代码。但现在,我有以下错误消息: 我的JAVA_HOME和JRE_HOME: 并在Eclipse JRE中设置为1.5。Java 1.8在安装过程中是否设置了一些配置?

  • 问题内容: 我试图使用SpringJUnit4ClassRunner创建一个单元测试,但是每次执行测试时,它都说它无法使用mvn install找到SpringJUnit4ClassRunner。 这是我的代码 这是我的POM文件: 我正在使用适合IDE的springSource工具开发此spring mvc应用程序,并且在IDE上将SpringJUnit4ClassRunner突出显示为错误,尽

  • 问题内容: 我正在尝试使用Jersey框架构建RESTFul客户端,因此添加了以下类: 但是,即使我在WEB-INF / lib和应用程序类路径下有以下jar,我也找不到未找到的错误类ClientBuilder: 所以有人可以告诉我我在这里想念的那个罐子吗?在哪里可以找到它?我搜索了Web,发现唯一具有ClientBuilder的jar与RESTEasy框架有关,所以我认为这没有关系。 谢谢你的时

  • 问题内容: 我一直在尝试在脚本中打开Word文档,但收到相同的错误。 我的代码: 我试图更改和删除部分中的分号。 仍然出现相同的错误。 我在Mac和基于Linux的虚拟主机上使用的。 问题答案: 从PHP 5.4.5开始,COM和DOTNET不再内置在php内核中。您必须在php.ini中添加COM支持: 否则,您将在错误日志中看到此消息:致命错误:未找到类“ COM” 该扩展包含在Windows