返回信息流我是用eclipse写的代码,在SDK模拟器中都可以显示正常(代码没啥问题),然后在workspace的bin目录下执行java -jni com.test.layout.TestlayoutActivity,就是要包涵包名。我觉得路径也应该是对的,不然编译器不会识别到我里面包涵了activity这个类。我在想是不是SDK有问题,但是eclipse中已经能运行了,应该也没问题,网上找不到相关信息,非常苦闷
错误如下图,java代码如下,
http://fmn.rrimg.com/fmn065/20111010/1015/original_gi4r_0d4700008f091269.jpg
如果图看不到:原文就是:
错误:无法访问android.app.Activity
找不到android.app.Activity的类文件
----------------------------------------------------------
package com.test.layout;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.view.View;
import android.view.View.OnClickListener;
import android.text.Editable;
public class TestlayoutActivity extends Activity {
Button okButton;
Button cancelButton;
OnClickListener btnClick;
EditText inputtext;
public native String getresult(Editable input);//声明native方法,用于提取用户输入并传到C中
//并从C中接受返回值,并使用Toast输出
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
okButton=(Button)findViewById(R.id.OK);
cancelButton=(Button)findViewById(R.id.Cancel);
inputtext=(EditText)findViewById(R.id.Input);
btnClick = new OnClickListener() {
@Override
public void onClick(View v){
if (v == okButton) {
Editable input = inputtext.getText();
String output = getresult(input);
Toast.makeText(TestlayoutActivity.this,output, Toast.LENGTH_SHORT).show();
} else if (v == cancelButton) {
inputtext.getText().clear();
}
}
};
okButton.setOnClickListener(btnClick);
cancelButton.setOnClickListener(btnClick);
}
static {
System.loadLibrary("inputtest");
}
}
-----------------------------------------------------------
这是一条镜像帖。来源:北邮人论坛 / java / #20361同步于 2011/10/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
JNI&Android,将class文件编成.h时报错:无法访问android.app.A
linxiaobo
2011/10/10镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
这种问题一般是classpath没有包含activity类所在的路径
当你在eclipse中运行时,eclipse已经有了默认的classpath,并且该classpath包含了activity类所在路径;但是当你在cmd中直接运行时,classpath值是系统设置的classpath环境变量值,该classpath并没有包含activity类,所以提示找不到
【 在 linxiaobo 的大作中提到: 】
: 我是用eclipse写的代码,在SDK模拟器中都可以显示正常(代码没啥问题),然后在workspace的bin目录下执行java -jni com.test.layout.TestlayoutActivity,就是要包涵包名。我觉得路径也应该是对的,不然编译器不会识别到我里面包涵了activity这个类。我在想是不是SDK有问题,但是eclipse中已经能运行了,应该也没问题,网上找不到相关信息,非常苦闷
: 错误如下图,java代码如下,
:
: ...................
【 在 linxiaobo 的大作中提到: 】
: Activity的class在哪个目录呢,你们是用eclipse吗?
在你的工程目录/bin/classes目录下
【 在 MDifferent 的大作中提到: 】
: 我都是这么用:
: javah -classpath (你的class文件所在目录) -d (.h文件保存的路径) -jni (完整的包名+类名)
“你的class文件所在目录”---我写的是"classes"
“h文件保存路径”----"jni"
命令是在工程目录/bin下执行的
额,悲剧的是,发现仍然提示“找不到***的类文件”[ema1]
是不是应该"./classes"和"../jni"?
【 在 yaxing1984 的大作中提到: 】
:
: “你的class文件所在目录”---我写的是"classes"
: “h文件保存路径”----"jni"
: ..................