相关疑难解决方法(0)

JNI- FindClass函数返回null

我有一个简单的java类("MainX"),我使用shell脚本和eclipse编译.当我调用env-> FindClass("MainX")函数时,从脚本生成的MainX.class文件返回null,而从eclipse生成的MainX.class文件返回该类,然后执行runMainX函数.

生成的MainX.class文件与JNI C++可执行文件位于同一文件夹中.

MainX.java

public class MainX {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println(new MainX().runMainX());
    }

    public String runMainX(){
        return ("0.789");
    }
}
Run Code Online (Sandbox Code Playgroud)

JNIBinding.cpp

#define USER_CLASSPATH "."
....
....

JNIEnv* createVM (JavaVM **jvm)
{
    JNIEnv *env;                     /* pointer to native method interface */
    JavaVMInitArgs vm_args;              /* JDK/JRE 6 VM initialization arguments */
    JavaVMOption* options = new JavaVMOption[1]; //holds various JVM optional settings

    options[0].optionString = const_cast<char*>("-Djava.class.path="USER_CLASSPATH);
    vm_args.version = JNI_VERSION_1_6;       //version of Java platform
    vm_args.nOptions …
Run Code Online (Sandbox Code Playgroud)

c++ java java-native-interface jvm

11
推荐指数
2
解决办法
3万
查看次数

JNI ERROR(app bug):访问陈旧的本地引用0xbc00021(大小为8的表中的索引8)

从这里购买了绝对初学者和温度转换器应用程序的Android应用程序的hello world应用程序 两者在模拟器上运行正常,但当我尝试在Samsung Note 2上运行它时,LogCat上出现错误

02-08 07:22:18.665: E/dalvikvm(30944): JNI ERROR (app bug): accessed stale local reference 0xbc00021 (index 8 in a table of size 8)
02-08 07:22:18.665: E/dalvikvm(30944): VM aborting
02-08 07:22:18.665: A/libc(30944): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 30944 (oid.temperature)
Run Code Online (Sandbox Code Playgroud)

两个应用程序都使用标题打开显示布局,但在布局中不显示任何其他视图

样品运行良好

设备:备注2​​ Samsung-gt_n7100

IDE:Eclipse版本3.8

操作系统:64位Windows 7

android

10
推荐指数
1
解决办法
3万
查看次数

使用Qt/C++通过JNI调用Java代码.FindClass找不到类

我是JNI的新手,这是我第一个尝试从C++调用Java代码的程序.我正在使用Qt 5.2,我正在编写一个Android应用程序.

我无法找到我的java类并将其加载到我的C++程序中.我已经在堆栈溢出和其他地方阅读了很多帖子,这似乎是一个常见的问题,但我还没能解决我的问题..

我也不确定Java VM是否已正确设置,因为QAndroidJniEnvironment上的Qt文档很少.

我正在寻找一个如何找到我的java类的解决方案.我也很欣赏代码其他部分的一般反馈(我假设可能会有更多错误).

错误消息:

Starting remote process.D/dalvikvm(24911): GC_CONCURRENT freed 384K, 5% free 9180K/9596K, paused 1ms+2ms, total 15ms
D/dalvikvm(24911): Trying to load lib /data/data/org.qtproject.example.AndroidTest/lib/libgnustl_shared.so 0x428b2360
D/dalvikvm(24911): Added shared lib /data/data/org.qtproject.example.AndroidTest/lib/libgnustl_shared.so 0x428b2360
D/dalvikvm(24911): No JNI_OnLoad found in /data/data/org.qtproject.example.AndroidTest/lib/libgnustl_shared.so 0x428b2360, skipping init
D/dalvikvm(24911): Trying to load lib /data/data/org.qtproject.example.AndroidTest/lib/libQt5Core.so 0x428b2360
D/dalvikvm(24911): Added shared lib /data/data/org.qtproject.example.AndroidTest/lib/libQt5Core.so 0x428b2360
D/dalvikvm(24911): Trying to load lib /data/data/org.qtproject.example.AndroidTest/lib/libQt5Network.so 0x428b2360
D/dalvikvm(24911): Added shared lib /data/data/org.qtproject.example.AndroidTest/lib/libQt5Network.so 0x428b2360
I/Qt      (24911): Network start
D/dalvikvm(24911): Trying to load lib /data/data/org.qtproject.example.AndroidTest/lib/libQt5Qml.so 0x428b2360
D/dalvikvm(24911): …
Run Code Online (Sandbox Code Playgroud)

c++ java java-native-interface qt android

8
推荐指数
1
解决办法
1万
查看次数

Jni FindClass返回NULL

我在头文件中得到了c ++结构,

struct StatusLine
{
    static jclass Class; // Lorg/apache/http/StatusLine;
    static jmethodID GetStatusCode; // ()I
};

struct ByteArrayOutputStream 
{
    static jclass Class; // Ljava/io/ByteArrayOutputStream;
    static jmethodID Constructor; // ()V
    static jmethodID Close; // ()V
    static jmethodID ToByteArray; // ()[B
};

struct HttpEntity
{
    static jclass Class; // Lorg/apache/http/HttpEntity;
    static jmethodID WriteTo; // (Ljava/io/OutputStream;)V
    static jmethodID GetContent; // ()Ljava/io/InputStream;
};  
Run Code Online (Sandbox Code Playgroud)

和cpp文件是

 #define JAVA_STATUS_LINE_CLASS             "org/apache/http/StatusLine"
 #define JAVA_HTTP_ENTITY_CLASS             "org/apache/http/HttpEntity"
 #define JAVA_BYTE_ARRAY_OUTPUT_STREAM_CLASS "java/io/ByteArrayOutputStream"

 jclass StatusLine::Class = 0;
 jmethodID StatusLine::GetStatusCode = 0;

 jclass  ByteArrayOutputStream::Class = …
Run Code Online (Sandbox Code Playgroud)

c++ java java-native-interface android

1
推荐指数
1
解决办法
4738
查看次数

标签 统计

android ×3

c++ ×3

java ×3

java-native-interface ×3

jvm ×1

qt ×1