最近有个任务,需要用C++调用jar包里面的类,但是发现找不到类。
希望大神们可以帮忙分析一下。
以下是初始化JVM虚拟机的,在classpath上,把tools.jar,dt.jar,rt.jar 都包含进去了
options[0].optionString = "-Djava.compiler=NONE"; options[1].optionString = "-Djava.class.path=./my.jar;D:\\Program Files\\Java\\jdk1.6.0_31\\lib\\tools.jar;D:\\Program Files\\Java\\jdk1.6.0_31\\lib\\dt.jar;D:\\Program Files\\Java\\jdk1.6.0_31\\jre\\lib\\rt.jar"; options[2].optionString = "-verbose:jni"; //用于跟踪运行时的信息 memset(&vm_args, 0, sizeof(vm_args)); vm_args.version = JNI_VERSION_1_6; vm_args.nOptions = 1; vm_args.options = options; status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
之后就是需找类
test = env->FindClass("java/lang/String"); item = env->FindClass("jm/item");
其中路径的设置是这样的my.jar在工程目录下,和main.cpp 是同一级
my.jar解压缩到当前目录 有文件夹jm 里面是item.class
test可以有正确的返回值,但是item不行
如下图:
item无法返回值。
还望各位大神解惑,拜谢不已。。。。。。
相关推荐
首先,`java调用C或者C++动态库dll测试jar包和测试dll`的标题表明我们正在探讨如何使用Java调用C或C++编译的DLL文件。DLL是Windows操作系统中的动态链接库文件,它包含可由多个程序同时使用的函数和资源。Java本身并...
- **添加依赖**:首先,需要将JNA库和平台特定的库(如jna.jar和jna-platform.jar)添加到项目类路径中。在现代的Maven或Gradle项目中,可以通过配置依赖管理来实现。 - **定义接口**:创建一个Java接口,该接口...
本文将详细介绍如何使用Java调用DLL以及所需的必备jar包。 首先,Java并不直接支持DLL的调用,因为它是一个跨平台的语言,而DLL是Windows操作系统特有的。为了实现Java与DLL之间的交互,我们需要借助于第三方库。在...
本篇文章将深入探讨JNI的开发过程以及如何生成和调用jar包。 首先,我们需要了解JNI的基本概念。JNI是Java平台提供的一种接口,让Java程序能够与本地(非Java)代码进行通信。在JNI的帮助下,开发者可以编写C/C++...
"直接导入不用修改其他东西,直接可以使用"意味着开发者已经处理好了所有必要的配置,用户只需要将这个json_jar包添加到项目的类路径中,就可以立即开始使用其提供的JSON功能,无需进行任何额外的代码调整或设置。...
在C++程序中,需要注意处理可能出现的错误,例如文件找不到、编译失败等。同时,确保正确设置javac和jar命令的路径,因为它们可能不在系统的PATH环境变量中。 最后,压缩包中的"forjava"可能包含了用于演示或测试的...
确保在运行时没有出现找不到符号或链接错误。 7. **注意事项** - 为了确保兼容性,需要为所有目标设备架构提供对应的.so文件。 - 注意处理内存管理和线程同步,因为JNI代码中没有Java自动垃圾回收机制。 - 调试...
虽然`android.jar`中的类大部分是不可执行的,因为它们实际上是接口,真正的实现存在于系统运行时环境中。但是,分析`android.jar`源码可以帮助理解API的设计思路和使用方式。 在压缩包的`core`子目录中,可能包含...
在实际操作时,需要确保所有依赖的jar包都已经在正确的路径下,否则可能会遇到“找不到类”或“类冲突”等问题。 总的来说,"电信采信项目源码和依赖jar包"是一个关于电信数据采集的Java项目,包含代码初稿和运行所...
本文将详细阐述在Java类中调用dll的步骤以及涉及到的jar包。 首先,Java调用dll主要依赖于Java本地接口(Java Native Interface, JNI)。JNI允许Java代码与本地代码(如C++或C)进行交互。为了在Java中使用dll,你...
3. **Spring Boot框架**:Nacos基于Spring Boot构建,因此`spring-boot-starter-*`系列的jar包不可或缺,它们提供了自动配置、Web支持等功能。 4. **Netty通信框架**:Nacos使用Netty作为网络通信层,提供高效率、...
1. **连接管理**:C++库可能包含一个`Connection`类,负责建立、管理和关闭到MySQL服务器的连接。它可能需要数据库的URL、用户名、密码以及可能的连接属性。 2. **SQL语句执行**:`Statement`类可能是用于执行SQL...
4. **配置环境**:在Java项目中使用OpenCV,首先需要将这些jar包添加到项目的类路径(ClassPath)中,这可以通过IDE(如Eclipse或IntelliJ IDEA)的设置来完成。在命令行环境中,可以使用`java -cp`参数指定类路径。...
JNA提供了一种简单的方式来调用C函数和其他本地库,使得Java开发者能够利用本地系统的功能,比如操作系统APIs,硬件接口等,而无需深入到C/C++的世界。 标题"JNA方式实现Java调用dll的必用jar包"指的是使用JNA库来...
3. **方法映射**:JNative内部会将Java的native方法名转换为符合C/C++的函数调用约定的名称,实现Java方法与本地函数的映射。 4. **参数传递**:JNative处理Java对象到C/C++数据类型的转换,确保参数能正确传递给...
- 错误处理:在实际应用中,应处理可能的JNI调用错误,如找不到符号、类型不匹配等。 总结来说,`JNative-1.3.2`是Java调用DLL和SO文件的利器,通过JNI接口,它消除了Java与本地代码之间的障碍,使得开发者可以...
引入这个jar包到Java项目中,开发者就可以在Java代码中直接使用OpenCV的函数和类。 在Windows环境下,dll文件是必不可少的,因为OpenCV的一些功能需要这些动态链接库才能正常运行。这些dll文件需要放在系统路径或者...
不规则形状的 JFrame 则可能涉及到了图形绘制和剪裁,JNA 可以调用图形库函数来实现非矩形窗口。 总之,JNA 是 Java 平台上一个强大的本地访问工具,通过它可以轻松地将 Java 应用程序与操作系统底层功能相结合,而...
然而,JNI的学习曲线陡峭,且需要编写C或C++代码,对于许多开发者来说并不友好。为了解决这一问题,Java社区推出了一个名为Java Native Access(JNA)的库,其中"jna-3.2.5.jar"是该库的一个版本。本文将深入探讨JNA...
3. 集成库:将`protobuf-javanano-3.1.0.jar`添加到Java项目的类路径中。 4. 使用生成的代码:在Java代码中,通过生成的类来创建、序列化和反序列化PB消息。 5. 通信:通过网络或其他方式发送和接收序列化的PB消息...