无法将 DefineClass (JNI) 与 Qt 资源一起使用

圆顶

我正在尝试使用DefineClass,它是Java Native Interface 的一部分该方法采用 a const jbyte*const signed char*我正在尝试从 Qt 资源中解析它。但是一定有什么问题,因为ExceptionDescribe()打印java.lang.ClassFormatError: Truncated class file

QFile qfile(":/SomeClass.class");
qfile.open(QFile::ReadOnly)

QByteArray qbytes = qfile.readAll();
char *test = qbytes.data();
jbyte *buf = reinterpret_cast<jbyte*>(test);

jclass processorCls = env->DefineClass("example/SomeClass", nullptr, buf, sizeof(buf)); 

if (env->ExceptionCheck())
{
    env->ExceptionDescribe();
    env->ExceptionClear();
}

我可以验证资源是否有效,因为我能够qfile使用此处找到的方法打印 的内容

void read(QString fName)
{
    QFile file(fName);
    if (!file.open(QFile::ReadOnly | QFile::Text))
    {
        std::cout << "Could not open the file for reading" << std::endl;
        return;
    }

    QTextStream in(&file);
    QString text = in.readAll();

    std::cout << text << std::endl;

    file.close();
}
j_kubik

sizeof(buf)返回指针的大小,而不是缓冲区的大小。qbytes.size()改用 。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将向量与Qt一起使用

将子类与Qt一起使用

Qt qDebug无法与QConsoleApplication或QApplication一起使用

将tensorflow lite与Qt一起使用

JVM无法与包含名为“ Node”的类的JNI C ++代码一起使用

无法在JNI中将GetMethodID与字节数组参数一起使用

由于某些开销,将OpenCL与Android JNI一起使用会产生缓慢的代码

将 JNI 与包一起使用时如何解决 UnsatisfiedLinkError?

将CMake与Qt5和Qt插件一起使用

如何将 setOnClickListener 与资源位置一起使用?

Qt5:如何将QPointer与Forward Declared类一起使用

如何将模板与QT信号和插槽一起使用?

我们可以将QT与C#一起使用来创建GUI吗?

将Qt Pyside2与asyncio await语法一起使用?

将QT Creator 5.8与MSVC 2015编译器一起使用

将Leap Motion控制器与QT创建器一起使用

将QGLWidget与Qt5一起使用时的性能问题

PyQt5:将 loadUi 与 Qt Designer 中的提升小部件一起使用

JNI-类加载问题。DefineClass函数似乎不起作用

如何将omnifaces CDN资源处理程序与版本化资源一起使用?

与Qt,GTK +或Tcl一起使用

使用JNI时Qt在哪里寻找Java类

QT5和Antlr4.8无法与Cmake和QT Creator一起编译

使用 QtQuick.Controls 1.12 将 Qt TextTable 与 TextArea 一起使用时,文本会错位

当我将WPF UserControl与内置项目以外的其他项目一起使用时,无法找到资源

在宏内将Qt4与CMake的find_package一起使用时出现问题

将SQLite3临时数据库与QT4 QSQLDatabase一起使用

如何将Visual Studio 2017与Qt一起使用以开发GUI应用程序?

PrintWriter 对象变量在与资源一起使用时无法解析为类型