- 浏览: 844330 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (530)
- Java编程 (64)
- C/C++/D (6)
- .Net/C# (9)
- Ruby (12)
- JavaScript (77)
- XML (1)
- JSON (1)
- Ajax (17)
- ExtJs (81)
- YUI (1)
- JQuery (7)
- DWR (1)
- HTML (7)
- CSS (7)
- Database (6)
- PowerDesigner (23)
- DB2 (2)
- Oracle (57)
- MS SQL Server (8)
- MySQL (6)
- JSP/Servlet/JSTL/TagLib (3)
- Spring (1)
- Hibernate (0)
- iText (0)
- Struts (0)
- Struts2 (0)
- iReport (0)
- FreeMarker (0)
- HttpClient (1)
- POI (6)
- FckEditor (15)
- Eclipse / MyEclipse (10)
- IntelliJ IDEA (0)
- NetBeans (0)
- Tomcat (11)
- WebLogic (1)
- Jboss (3)
- jetty (4)
- IIS (2)
- CVS/VSS (1)
- FTP (1)
- Windows/DOS (6)
- Linux/Unix (0)
- 软件建模 UML (0)
- Design Pattern & Thinking In Programming (10)
- 数据结构与算法 (12)
- 软件项目管理 (9)
- 行业应用解决方案 (3)
- 电脑软件与故障解决 (13)
- 编程语言 (1)
- 十万个为什么 (3)
- JBPM (2)
- sysbase (2)
- JDBC (8)
- Ant (2)
- Case-计算机辅助软件工程 (1)
- WebService (4)
- 浏览器 (1)
最新评论
-
gaoqiangjava:
同一楼,还请大手帮解决
JAVA读取word文件 -
hyl523:
// 判断数组中的第一个值是否未定义,如果未定义,便定义为空对 ...
javascript面向对象之二 命名空间 -
ping12132200:
ping12132200 写道我抱着个错不是因为:body标签 ...
extjs在IE报对象不支持此属性或方法 -
ping12132200:
我抱着个错不是因为:body标签内的第一个元素不能为文本tex ...
extjs在IE报对象不支持此属性或方法 -
fireinjava:
呀,不错,转走了,谢谢啦~
利用OpenOffice将word转换成PDF
大家都知道com组件的接口方法是基于windows下开发的。要在java里调的话。就要用到 JNI 技术。 JNI 是Java Native Interface的缩写,JNI标准至少保证本地代码能工作在任何Java 虚拟机实现下。尤其是c++或是c写的com组件接口。
JNI(Java Native Interface)的书写步骤 一般分为以下:
1、 编写带有native声明的方法的java类
2、 使用javac命令编译所编写的java类
3、 使用javah
?jni java类名生成扩展名为h的头文件
4、 使用C/C++实现本地方法
5、 将C/C++编写的文件生成动态连接库
写个例子来说明,最常用的还是hello world 的例子吧。
class HelloWorld {
public native void displayHelloWorld();
static {
System.loadLibrary("hello");
}
public static void main(String[] args) {
new
HelloWorld().displayHelloWorld();
}
}
注意:LoadLibrary中的DLL文件名称可以随便定.只要做好的动态链接库改名成这个字符串就可以了
如果你想将一个方法声明为本地方法的话,必须将方法声明为native方法,并且不能实现。 做好该步准备以后,用javac TestNative.java生成.class.检验语法. 语法检查通过以后,用javah HelloWorld 生成.h的C头文件. 然后打开VC++6.0,新建->; 工程 ->; win32 Dynamic-Link Library .在向导中选择空工程. 把刚才javah生成的那个头文件加入工程 .然后 文件->;新建->;textFile 自己做一个.c文件.实现自己的native函数.例子如下:
1 #include
2 #include "HelloWorld.h"
3 #include
4 JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env,
jobject obj)
{
printf("Hello world!\n");
return;
}
备注:
其中的HelloWorld.h通常在 jdk\include\
可以先拷贝到VC安装目录下的include目录下。一劳永逸,以后可以方便使用JNI技术,全编译一下工程,如果没有出错,则此时生成动态链接库成成功。把动态链接库拷贝到HelloWorld
.java所在的目录上.
运行java HelloWorld 看结果吧.
在实际应用中比较麻烦是数据类型的转换。因为要解决java和C++数据类型互通的问题。比如java里的string 如何映射为c++里相应的字符。还希望大家一起讨论。
发表评论
-
java调用dll方法
2011-06-02 21:56 1601Java语言本身具有跨平台性,如果通过Java调用DLL的技术 ... -
DIV+CSS
2011-05-31 13:07 901http://www.divcss5.com/ -
getWriter() has already been called for this response的解决办法
2011-05-30 14:15 3714Servlet规范说明,不能既调用 response.getO ... -
CVS客户端
2011-05-27 14:54 916http://www.syntevo.com/index.ht ... -
UML工具
2011-05-25 18:59 898http://www.umlchina.com/Tools/N ... -
applicationcontext.xml怎么分模块简化配置?
2011-05-22 18:02 2250(1) 在用spring做项止的时候,我们经常会在appli ... -
Struts1.2分模块后的路径问题
2011-05-22 18:00 16131.某项目分模块的web.xml配置如下: <i ... -
java API chm html 1.5 1.6 中文版英文版 帮助文档
2011-05-14 10:45 2677J2SE DK & API下载 ————————- h ... -
ClientAbortException原因探究
2010-12-23 16:17 1878WEB是部署在TOMCAT5.5.17下面的,采用JNDI链接 ... -
java游戏 http://blog.csdn.net/cping1982/archive/2009/06/10/4258704.aspx
2010-11-08 22:31 1266http://blog.csdn.net/cping1982/ ... -
Java中字符串(String)的存储和赋值原理
2010-11-08 22:14 1232可能很多java的初学者对String的存储和赋值有迷惑, ... -
Java中字符串的最大长度
2010-11-08 22:12 1318在cpp中为了可移植性,string的长度是string::s ... -
Java与XML联合编程之DOM篇
2010-10-06 13:37 893一、DOM初步 DOM是Document Object ... -
jexl解析表达式字符串
2010-10-06 11:44 1959网址:http://commons.apache.org/je ... -
Java中getResourceAsStream的用法
2010-10-06 11:31 2012Java中getResourceAsStream的用法 首先 ... -
Class.getResourceAsStream 和 ClassLoader.getResourceAsStream
2010-10-06 11:08 859Class.getResourceAsStream 和 Cla ... -
利用第三方的Jar包内的类和方法来判别文件编码
2010-08-06 13:07 1790今天在论坛里看见了一个人发帖子问,如何查看文件的编码。有一个人 ... -
将Java程序作成exe文件的几种方法
2010-08-06 13:04 969看到网上有同志的介绍将Java程序作成exe文件的方法,写的不 ... -
Java基本类型转换总结
2010-07-26 19:49 1391数值型转换成字符型 // 基本数据类型, int i_a ... -
怎样不使用中间变量来交换两个变量的值?
2010-07-10 21:39 1522int 的话就+后再减.string 的话就连接再截取. ...
相关推荐
接口中的方法声明需要使用`@DeclDLL`注解,指定对应的COM方法。 3. **加载COM组件**:使用`ActiveXComponent`类加载COM组件。例如: ```java ActiveXComponent excel = new ActiveXComponent("Excel.Application")...
Java调用COM+组件是一种常见的跨语言交互技术,它允许Java应用程序利用已有的COM(Component Object Model)或COM+组件,这些组件通常是用其他语言如C++或Visual Basic编写的。这种技术对于整合遗留系统或者利用...
4. **调用COM方法**:通过`ActiveXComponent`对象,你可以调用COM组件的任何方法。对于接受`VARIANT*`和`BSTR*`参数的方法,可以使用`Variant`类来封装数据。`Variant`类支持多种数据类型,包括字符串、整型、浮点型...
本篇将详细讲解如何利用Java调用WPS(金山办公软件)或PDFCreator的COM接口来实现doc到pdf的转换。我们将探讨以下知识点: 1. **什么是COM接口**: COM(Component Object Model)是微软提出的一种组件对象模型,...
在Java编程中,通过URL调用接口是一种常见的网络通信方式,尤其在Web服务和API交互中扮演着重要角色。这个项目提供了一种方法,通过URL发送请求并接收响应,然后将响应的字符串转换为JSON格式进行处理。接下来,我们...
它的主要功能是将Java方法映射到COM方法,反之亦然,使得Java能够调用COM组件的方法和属性,就像它们是原生的Java类一样。 要使用JACOB,首先需要在Java项目中引入JACOB的jar文件。然后,你需要创建一个`...
Java 调用天气接口的知识点总结 Java 调用天气接口是指使用 Java 语言来调用天气预报服务的 WebService,获取当前天气信息和天气预报数据。下面是相关知识点的总结: 1. Java 调用 WebService Java 调用 ...
利用Jacob调用AutoCAD接口绘图,实现绘制图形,不是调用Windows绘制图形界面,是真正的调用AutoCAD绘图,只是给了测试代码,具体功能自己摸索
Java远程方法调用(Remote Method Invocation,简称RMI)组件是一种关键的技术,它允许Java应用程序在不同的网络节点之间透明地调用对象的方法,仿佛这些对象都在本地进程中一样。这种技术在构建分布式系统、大型...
"java调用大漠插件的开源项目" 提到了如何利用Java来调用这类插件,而“njawin插件”则是一个关键工具,它提供了一个桥梁,使得Java代码能够与COM组件进行通信。 NJAWIN是Java调用Windows API和COM组件的开源库。这...
【Java调用C# COM方法】是指在Java应用程序中调用由C#编写的COM组件。由于Java本身不直接支持对.NET Framework中的COM组件进行调用,因此需要借助中间层来实现这一目标。通常有两种常见的方式:一是使用JNA(Java ...
java2word 是一个在java程序中调用 MS Office Word 文档的组件(类库)。该组件提供了一组简单的接口,以便java程序调用他的服务操作Word 文档。
1. **定义服务接口**:RPC调用始于定义一个服务接口,该接口声明了可供远程调用的方法。这些接口是客户端和服务端共享的契约,确保双方有相同的调用约定。 2. **序列化与反序列化**:由于数据需要在网络间传输,...
### Java调用C#封装的DLL方法 #### 第一种方法:Java利用JNA进行调用 **背景介绍:** 为了实现Java与C#之间的交互,一种常用的方式是通过调用C#封装的DLL文件来完成特定功能。这种方法涉及到.NET Framework与Java...
C#调用Java程序的方法 C#调用Java程序的方法是指将Java类转化成dotnet类,在C#项目直接调用。这种方法可以使得C#项目可以调用Java类的方法,从而实现C#和Java之间的交互。 在这个过程中,我们需要使用IKVM(ynamic...
JACOB利用Java本地接口(JNI)技术实现了这一功能,从而为开发者提供了对遗留COM组件的访问能力,这对于系统集成特别有用。 要使用JACOB,首先你需要下载并安装它。JACOB的最新版本可在其官方网站上获取,例如在...
Java调用AutoCAD接口是一项技术性很强的工作,它允许开发者使用Java编程语言来控制和操作AutoCAD应用程序,实现自动化绘图、数据交换等任务。在本压缩包中,"Java调AutoCAD接口.zip"提供了使用Jacob库进行这项工作的...
JNI是Java平台提供的一种接口,它允许Java代码调用本地(native)代码,也就是非Java语言编写的代码,反之亦然。在Android开发中,JNI常用于实现高性能计算、硬件访问或利用C/C++库。 要实现C语言调用Java语言的...
Java调用OCX控件是跨平台编程中的一项技术挑战,因为OCX(Object Linking and Embedding Control)是微软Windows环境下的组件对象模型(COM)控件。然而,通过第三方库如Jacob(Java和COM的桥梁),Java开发者能够在...
总之,Java调用Windows操作系统实现文本转语音并生成播放文件,涉及到JNI、COM组件、DLL编程、音频处理等多个方面,需要对Java和Windows API有深入理解。通过适当的技术选择和优化,可以创建出高效、灵活的文本转...