编写 JNI 时,数据类型名字遵循 Java 的相关规则,如 jint,jchar,jboolean,jlong 等,DLL 代码和 Java 代码交换数据也有自己的一套方法,如 env->GetFieldID(),env->GetMethodID() 等,需要一些时间才能熟悉,初学总是难免犯一些低级错误,所以掌握正确的调试方法尤为重要。
本人采用的工具是:Eclipse、VC++6.0
步骤如下:
•Eclipse 新建工程,编写 Java 代码
•cmd 进入命令行模式,切换到工程目录的 bin 文件夹,javah -jni com.ldq.xxx 生成头文件 _com_ldq_xxx.h
•VC++6.0 新建 DLL 工程,编写源文件 _com_ldq_xxx.cpp
•注意将 jni.h 文件和 jni_md.h 文件位置加入 Include 路径
•DLL 无法自已运行,需要可执行的 exe 调用 DLL 才可以,VC++6.0 中的设置如下
◦在左侧 workspace 中,右键点击建立的DLL工程,选 Settings ,选 Debug 选项卡,依次填入
■Executable for debug session 填入 C:\Program Files\Java\jdk1.6.0_13\bin\java.exe
■Working directory 填入 DLL工程路径\debug
■Program arguments 填入 com.ldq.xxx
◦将 Eclipse 工程路径下 bin 文件夹的类文件拷贝到 DLL工程路径\debug 下
◦由于从 java.exe 启动,单步调试是汇编代码,所以要在调试的函数中设置断点,运行到断点处再单步调试
分享到:
相关推荐
Java 分布式处理技术 RMI,JNDI Java 分布式处理技术是指在 Java 平台上实现分布式...RMI 和 JNDI 是 Java 分布式处理技术的核心组件,RMI 实现了对象之间的交互,而 JNDI 提供了一个统一的接口来访问不同的目录服务。
JNDI注入攻击通常发生在应用程序不当处理JNDI查找时,攻击者可以通过构造恶意的JNDI引用来执行任意代码。例如,Fastjson是一个流行的Java库,用于快速转换Java对象到JSON格式和反之。在某些版本的Fastjson中,存在...
JNDI允许Java应用程序查找和操作各种类型的资源,如数据源、对象服务、邮件服务器等,而无需知道这些资源的具体实现细节。JNDI在分布式环境中特别有用,因为它提供了一种统一的方式来定位和管理网络资源。 JNDI的...
这段代码展示了如何创建`Hashtable`对象并设置JNDI环境属性,最后通过这些属性创建`InitialContext`对象。 总结来说,JNDI作为一种重要的Java API,为开发者提供了强大的命名和服务定位功能,尤其是在构建复杂的...
在JNDI中,命名服务允许程序将名字与对象关联起来,而目录服务则扩展了命名服务,添加了属性查询和分类功能。通过JNDI,开发者可以方便地查找和管理网络上的资源,如数据库连接池、邮件服务器配置、EJB Bean等。 这...
JNDI是Java平台中用于查找和绑定资源的接口,它允许程序通过名称查找数据源、对象服务等。在Java应用中,特别是企业级Java应用中,JNDI被广泛用于获取数据库连接,因为这种方式可以实现数据库连接的集中管理和动态...
通过这个库,开发者可以使用JNDI接口来查找和操作文件系统中的资源,就像处理远程对象一样。 2. `providerutil.jar`:这个JAR文件包含了JNDI服务提供商的实用工具类,这些类帮助实现和管理服务提供商,使它们能够被...
1. **Struts:** Struts作为MVC框架处理用户请求,通过Action跳转控制业务流程。在整合JNDI时,可能需要在Struts配置文件(struts-config.xml或struts2的struts.xml)中注入依赖的服务或数据源。 2. **Spring:** ...
1. **避免将JNDI作为数据库使用**:虽然JNDI可以存储对象,但它并不是设计用来处理大量数据或持久化存储的。因此,不要将JNDI用作数据库。 2. **合理使用命名空间**:为了使JNDI更加易于管理和理解,建议合理规划...
本篇将主要探讨在不依赖于JNDI(Java Naming and Directory Interface)的情况下,如何使用Spring JMS处理消息。 JNDI通常被用于查找和绑定分布式环境中的资源,如消息队列。然而,在某些场景下,我们可能不需要...
- **Name**:在JNDI中,名字是对象的唯一标识符,它可以是简单的字符串或者由多个组件组成的复合名字。 - **Naming Provider**:命名提供者是实现了JNDI接口的具体服务,负责实际的查找、绑定等操作。Java提供了...
JNDI是一个目录服务,用于查找和管理分布式环境中的对象。在Spring中,JNDI常用于查找JMS连接工厂和目的地(如队列和主题)。通过JNDI,开发者可以将JMS相关的配置与实际代码分离,实现更灵活的部署和管理。在...
6. **处理异常**:在使用JNDI时,需要捕获并处理可能的异常,如`NamingException`。 ### 3. JNDI在实际应用中的例子 - **JDBC数据源**:在应用服务器中,通常会配置JDBC数据源,应用程序可以通过JNDI查找数据源,...
4. **实战示例**:提供实际的代码示例,展示如何在应用程序中集成JNDI,以及如何处理各种服务的查找和管理。 **在学习JNDI时,你可能会遇到的几个关键知识点:** 1. **Naming Contexts**:命名上下文是JNDI的核心,...
Java Naming and Directory Interface (JNDI) 是Java平台中用于访问各种命名和目录服务的API,它提供了一种统一的方式来查找和访问不同类型的网络资源,如数据库、对象、服务器等。然而,JNDI在带来便利的同时,也...
3. 处理查找结果:查找的结果可能是任何类型的对象,根据应用需求进行操作。 在实际开发中,`jndi.jar` 文件通常包含了JNDI相关的API,是使用JNDI所必需的库文件。将这个JAR包加入到项目的类路径中,才能使用JNDI...
JNDI的主要功能包括查找、绑定、解绑和重新绑定命名空间中的对象。命名空间可以理解为一个全局的、有序的对象存储区域,每个对象都有一个唯一的名称。JNDI的核心概念包括名称(Name)、上下文(Context)和绑定...
在Spring框架与Tomcat服务器的集成中,配置JNDI数据源是将数据库连接管理交给服务器来处理,提高应用的可移植性和资源利用率。下面将详细解释配置JNDI数据源的相关知识点。 一、JNDI数据源的概念 JNDI数据源是一种...