The JACOB Project: A JAva-COM Bridge

Jacob库:Java与COM组件交互的桥梁 本文还有配套的精品资源,点击获取 简介:Jacob(Java-COM Bridge)是一个开源Java库,它允许Java应用程序与Windows的COM组件进行交互,扩展了Java在Windows平台上的应用范围。这个工具使开发者能够调用仅支持COM接口的Windows API或第三方应用程序。Jacob库1.18.0版本包含核心的jar文件和适用于不同Windows架构的... 阅读详情

 http://danadler.com/jacob/

What Is JACOB?

JACOB is a JAVA-COM Bridge that allows you to call COM Automation components from Java. It uses JNI to make native calls into the COM and Win32 libraries. The JACOB project started in 1999 and is being actively used by thousands of developers worldwide. As an open-source project, it has benefitted from the combined experience of these users, many of whom have made modifications to the code and submitted them back for inclusion in the project.

The JACOB project has moved to Sourceforge.net. Verion 1.14.3 is now available at Sourceforge. If you are a sourceforge developer and are interested in contributing to the project, please contact the project administrators. The rest of this page is OUT OF DATE - please go to Sourceforge for current information and support.

Version 1.7 includes some new features as well as many bug fixes, memory leak plugs, as well as new models for threading and object lifetime which will make the code much more robust. See the release notes below for details.

Here is the background of how the project got started.

Release Notes and Credits

Version 1.7 Release Notes and Credits
Version 1.6 and Previous Versions Release Notes and Credits

Related Links

  • The JACOB mailing list is hosted at yahoo groups: http://groups.yahoo.com/group/jacob-project. This is the preferred way to get support for JACOB. It also includes an extensive archive. If you are doing any development with JACOB, please join the list.
  • Massimiliano Bigatti has developed Jacobgen - a generator that automatically creates JACOB code from Type Libraries. He no longer maintains it, but you can get version 0.3 here: Jacobgen-0.3 also the samples are here: Jacobgen-samples-0.3
  • Steven Lewis is developing a version of Java2Com that supports JACOB code generation. See: http://www.lordjoe.com/Java2Com/index.html.
  • To find documentation on the com.ms.com package, go to: http://www.microsoft.com/java/download/dl_sdk40.htm and at the bottom of the page is a link that says: Microsoft SDK for Java 4.0 Documentation Only. You should download that file and install it. Then, view sdkdocs.chm and look for "Microsoft Packages Reference". Hopefully, the next release of JACOB will include full javadoc (volunteers?)...

Downloads

The JACOB binary distribution (jacobBin_XX.zip) includes:

  1. jacob.jar: a JAR file for the java classes which you must add to your CLASSPATH. The package names replace com.ms with com.jacob (for example com.ms.com.Variant maps to com.jacob.com.Variant.
  2. jacob.dll: a small Win32 DLL which you must add to your PATH.
  3. samples: provided in Java source and compiled form to demonstrate various features of the product. In particular, a set of wrapper classes for Microsoft® ADO are provided as samples.

The source code is available in the JACOB source distribution (jacobSrc_XX.zip), which includes both the Java and C++ code. The source distribution is a superset of the binary one, so you don't need both.

Version 1.7

Download jacobBin_17.zip       Download jacobSrc_17.zip

Version 1.6

Download jacobBin_16.zip       Download jacobSrc_16.zip

License

This is the old JACOB License. The new license is at Sourceforge (see link above).

Usage and Documentation

Since the com.jacob classes are intended to be compatible with the Microsoft® com.ms classes, it is recommended that you download the documentation of Microsoft's SDK for Java. To find documentation on the com.ms.com package, go to: http://www.microsoft.com/java/download/dl_sdk40.htm and at the bottom of the page is a link that says: Microsoft SDK for Java 4.0 Documentation Only. You should download that file and install it. Then, view sdkdocs.chm and look for "Microsoft Packages Reference". Hopefully, the next release of JACOB will include full javadoc (volunteers?)...

The following example uses Microsoft® Excel as an Automation server:


import com.ms.com.*;
import com.ms.activeX.*;

public class DispatchTest
{
  public static void main(String[] args)
  {
    ActiveXComponent xl = new ActiveXComponent("Excel.Application");
    Object xlo = xl.getObject();
    try {
      System.out.println("version="+xl.getProperty("Version"));
      System.out.println("version="+Dispatch.get(xlo, "Version"));
      xl.setProperty("Visible", new Variant(true));
      Object workbooks = xl.getProperty("Workbooks").toDispatch();
      Object workbook = Dispatch.get(workbooks,"Add").toDispatch();
      Object sheet = Dispatch.get(workbook,"ActiveSheet").toDispatch();
      Object a1 = Dispatch.invoke(sheet, "Range", Dispatch.Get,
                                  new Object[] {"A1"},
                                  new int[1]).toDispatch();
      Object a2 = Dispatch.invoke(sheet, "Range", Dispatch.Get,
                                  new Object[] {"A2"},
                                  new int[1]).toDispatch();
      Dispatch.put(a1, "Value", "123.456");
      Dispatch.put(a2, "Formula", "=A1*2");
      System.out.println("a1 from excel:"+Dispatch.get(a1, "Value"));
      System.out.println("a2 from excel:"+Dispatch.get(a2, "Value"));
      Variant f = new Variant(false);
      Dispatch.call(workbook, "Close", f);
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      xl.invoke("Quit", new Variant[] {});
    }
  }
}

As it stands, the code will only compile with JVC (Microsoft's compiler) and only run under JVIEW (Microsoft's VM). However, if you have the JACOB distribution installed, then you can replace the two top lines with:


import com.jacob.com.*;
import com.jacob.activeX.*;


and now, you can compile this with any Java compiler and run it using any Java VM on any Win32 platform.

Frequently Asked Questions (FAQ)

Massimiliano Bigatti has compiled The JACOB FAQ based on his experience and the discussions in the JACOB yahoo group: http://groups.yahoo.com/group/jacob-project.

Implementation

The JACOB implementation of a COM Automation controller is quite different than the one used in the Microsoft® JVM . In JACOB, the com.jacob.com.Dispatch class is the basic building block. This class is used to create an instance of an Automation server. The com.jacob.activeX.ActiveXComponent class simply extends the Dispatch class to provide compatibility with the way Automation servers are created in the MS JVM. The Dispatch class's methods are all static for compatibility with the MS class.

The com.jacob.com.Dispatch constructor takes a String as an argument. If the string contains a colon (':'), then I try to interpret it as a Moniker, otherwise, I assume it's a ProgID. This means that if you want to create an object by its CLSID instead of ProgID, then you should use the clsid: Moniker as the string. I find this cleaner than manipulating GUID classes in Java.

The implementation of SafeArray's reproduces most of the functionality (and some of the quirks) of the Microsoft® implementation. This means, for example, that you have to size the array in the constructor before you fill it with data otherwise you will get an error, and the fromXXXArray methods do not work for multi-dimensional arrays (which is consistent with the Microsoft® JVM). It would be nice to improve upon this interface, but for now, I put compatibility first.

One extra feature that I couldn't resist adding, is that the com.jacob.com.Variant class is java.io.Serializable. This is accomplished in the C++ code by using the VARIANT_UserMarshal and VARIANT_UserUnmarshal calls from OAIDL.H which are used to serialize a VARIANT to a byte array and back. This feature is reportedly broken on Windows 2000...

Threads, Applets and Security

The original version of JACOB did not handle COM threading issues. This means you had to create and use a COM component in the same thread.

Threading can prove tricky in applets and servlets. For example, the following code makes sure to initialize the COM component in the AWT event thread as opposed to the main applet thread. If you try to create and initialize the ScriptControl in the init() method, the subsequent event code would throw a ComFailException. Please read about the New Threading Model in Version 1.7 to find out about the many options of handling COM threading in JACOB.


import java.awt.event.*;
import java.applet.*;

import com.jacob.com.*;
import com.jacob.activeX.*;

public class AppTest extends Applet implements ActionListener
{
  TextField in;
  TextField out;
  Button calc;
  ActiveXComponent sC = null;
  Object sControl = null;

  public void init() 
  {
    setLayout(new FlowLayout());
    add(in = new TextField("1+1", 16));
    add(out = new TextField("?", 16));
    add(calc = new Button("Calculate"));
    calc.addActionListener(this);
  }

  public void actionPerformed(ActionEvent ev) 
  {
    if (sC == null) 
    {
      // create COM component in event thread
      sC = new ActiveXComponent("ScriptControl");
      sControl = sC.getObject();
      Dispatch.put(sControl, "Language", "VBScript");
    }
    // use COM component in same thread
    Variant v = Dispatch.call(sControl, "Eval", in.getText());
    out.setText(v.toString());
  }
}

In addition to the threading issue, you have to deal with the security restrictions imposed by browsers. If you run this applet in IE5 where the jacob.jar is in your CLASSPATH, then it will work, but if the jacob.jar classes are downloaded - you get a security exception. In JDK1.1.6 appletviewer, this code works as is, but in JDK 1.2.2 appletviewer, loadLibrary fails because there is no security descriptor. So far, I couldn't get the code to run in Netscape 4.6 at all.

COM Object Lifetime

Version 1.7 introduces a new model for COM Object lifetime, please see: COM Object Lifetime in JACOB.

Wrappers

I have included a sample directory called ado. In that directrory are a set of wrappers for ADO which are source-code equivalent to those produced by the Microsoft® JACTIVEX tool. The following excerpt shows how the Connection, Command and Recordset objects interact:


  // create connection and command objects and use them
  // to get a recordset
  public static void getCommand(String con, String query)
  {
     System.out.println("Command+Connection -> Recordset");
     Connection c = new Connection();
     c.setConnectionString(con);
     c.Open();
     Command comm = new Command();
     comm.setActiveConnection(c);
     comm.setCommandType(CommandTypeEnum.adCmdText);
     comm.setCommandText(query);
     Recordset rs = comm.Execute();
     printRS(rs);
     c.Close();
  }

In this release, the wrappers are generated by hand, but please see the related links section above for some 3rd party wrapper generators for JACOB.

Events

I wanted to support events in the first release, but delegating COM events to a proper Java interface was too much work for this timeframe. So, the current implementation departs from the Microsoft® implementation. This will, hopefully, be changed in the future to follow Beans event rules.

The current model is conceptually similar to the Visual Basic WithEvents construct. Basically, I provide a class called com.jacob.com.DispatchEvents which has a constructor that takes a source object (of type com.jacob.com.Dispatch) and a target object (of any type). The source object is queried for its IConnectionPointContainer interface and I attempt to obtain an IConnectionPoint for its default source interface (which I obtain from IProvideClassInfo). At the same time, I also create a mapping of DISPID's for the default source interface to the actual method names. I then use the method names to get jmethodID handles from the target Java object. All event methods currently must have the same signature: one argument which is a Java array of Variants, and a void return type.

The dependency on IProvideClassInfo means that the Type Library for the component must exist if you want to support events. The following example shows how to use the Microsoft® ScriptControl as an in-proc server, and catch the Error and Timeout events which it generates:

Version 1.7 also includes code to read the type library directly from the progid. This makes it possible to work with all the Microsoft Office application events, as well as IE5 events. For an example see the samples/test/IETest.java example.


import com.jacob.com.*;

public class ScriptTest
{
  public static void main(String args[])
  {
    System.runFinalizersOnExit(true);

    String lang = "VBScript";
    Dispatch sControl = new Dispatch("ScriptControl");
    Dispatch.put(sControl, "Language", lang);
    Dispatch.put(sControl, "AllowUI", new Variant(true));
    // instantiate an event target object
    errEvents te = new errEvents();
    // hook it up to the sControl source
    DispatchEvents de = new DispatchEvents(sControl, te);
    // run an expression from the command line
    System.out.println("eval("+args[0]+") = "+ 
                       Dispatch.call(sControl, "Eval", args[0]));
  }
}

// This is the event interface
class errEvents {
  public void Error(Variant[] args)
  {
    System.out.println("java callback for error!");
  }
  public void Timeout(Variant[] args)
  {
    System.out.println("java callback for timeout!");
  }
}


>java ScriptTest 'Now()'
eval(Now()) = 10/5/99 11:07:43 AM

>java ScriptTest '()Now()'
java callback for error!
eval(()Now()) = null

Non-Default Interfaces

Once you have a Dispatch object, you can navigate to the other interfaces of a COM object by calling QueryInterafce. The argument is an IID string in the format: "{9BF24410-B2E0-11D4-A695-00104BFF3241}". You typically get this string from the idl file (it's called uuid in there). Any interface you try to use must be derived from IDispatch. The following example shows how this can be used. The full example (including the ATL COM object) is in the samples\test\atl directory.


import com.jacob.com.*;
import com.jacob.activeX.*;

class MultiFace
{
  public static void main(String[] args)
  {
    System.runFinalizersOnExit(true);

    ActiveXComponent mf = new ActiveXComponent("MultiFace.Face");
    try {
      // I am now dealing with the default interface (IFace1)
      Dispatch.put(mf, "Face1Name", new Variant("Hello Face1"));
      System.out.println(Dispatch.get(mf, "Face1Name"));

      // get to IFace2 through the IID
      Dispatch f2 = mf.QueryInterface("{9BF24410-B2E0-11D4-A695-00104BFF3241}");
      // I am now dealing with IFace2
      Dispatch.put(f2, "Face2Nam", new Variant("Hello Face2"));
      System.out.println(Dispatch.get(f2, "Face2Nam"));

      // get to IFace3 through the IID
      Dispatch f3 = mf.QueryInterface("{9BF24411-B2E0-11D4-A695-00104BFF3241}");
      // I am now dealing with IFace3
      Dispatch.put(f3, "Face3Name", new Variant("Hello Face3"));
      System.out.println(Dispatch.get(f3, "Face3Name"));

    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Limitations

  • Since we do not modify the underlying VM, JACOB cannot do any magic with casting. So, for the moment, it does not support any form of custom interfaces.
  • The event model (Java catching COM events) in this release is not compatible with either the Beans model or the WFC model. The current model allows you to pass in any Java object as a COM event listener and its methods are invoked by reflection.
  • This release does not include a reverse bridge. Therefore, you can't wrap complex Java objects and send them into COM method calls. All inputs must resolve to Variant objects. My theory was that a reverse bridge requires much more code, and so should reside in a separate DLL. I have the code for a skeleton for a reverse bridge - if anyone is interested in working on it. I see a reverse bridge as lower priority, because Sun already provides one as part of the Java PLUG-IN.
  • This release does not provide any support for hosting graphical ActiveX controls inside of Java components.
  • Testing: this release has not been tested as rigorously as I would like. Please report or fix any bugs you find!
  • Platform and VM Testing: I have only tested on NT4SP5 with Sun's JDK 1.1.6 and JDK 1.2.2 VM's and Microsoft's Java VM (Build 3182).

Support

The JACOB mailing list WAS hosted at yahoo groups: http://groups.yahoo.com/group/jacob-project. However, due to severe limitations of the yahoo groups software it was getting inordinate amounts of spam and has been DISCONTINUED. Please use the SourceForge link at the top of this page for any support requests.

Contributions

You are encouraged to suggest modifications to the code of the JACOB project. Please refer to the SourceForge link at the top of this page and follow the submission rules of SourceForge.

 

Jacob工具包:Java与Windows COM组件交互指南 本文还有配套的精品资源,点击获取 简介:Jacob(Java COM Bridge)是一个允许Java应用程序与Windows上的COM组件进行交互的Java库。通过核心组件 jacob.dll 和 jacob.jar ,Jacob解决了Java与Office应用等第三方软件通信的问题。文章详细介绍了Jacob的安装、配置和使用方法,并通过操作W... 阅读详情

相关推荐

JACOB源码深度解析:Java与COM的桥接技术

在探讨Java与COM组件之间交互的复杂性时,JACOB库成为了解决方案的关键。本章将引导读者从JACOB的定义开始,介绍它作为一种桥接工具的主要功能。JACOB(Java COM Bridge)是一个开源项目,它允许Java代码通过JNI(Java本地接口)与Windows平台上的COM组件进行交互。JACOB利用JNI的能力,将Java的跨平台特性与Windows下强大的COM组件系统结合起来,使得Java开发者能够轻松访问和操作COM对象。

weixin_33506815的博客 518

Java com bridge 操作Word Excel Outlook.

                  JACOB是一个 JAVA到微软的COM接口的桥梁。使用JACOB允许任何JVM访问COM对象,从而使JAVA应用程序能够调用COM对象。如果你要对 MS Word、Excel 进行处理,JACOB 是一个好的选择。JACOB目前已经成为sourceforge(http://sourceforge.net/projects/jacob- project/)的一个开源项目,现在最新的版本是jacob-1.15-M4。                  把ja

kunlamp的专栏 2391

JAVA-COM Bridge 中间件

Jacob 是 JAVA-COM Bridge的缩写,是一个中间件,能够提供自动化访问MS系统下COM组件和Win32 libraries的功能。 • MS系统提供的COM组件 COM组件 对象ID MS Word Word.Application MS Excel Excel.Application MS Powerpoint Powerpoint.Application MS IE InternetExplore.Application

Java-COM Bridge

没出现webservice之前用的? 转载于:https://www.cnblogs.com/hshy/p/10752093.html

weixin_30678821的博客 1023

jacob语音朗读(包含API)

jacob-1.17-M2 语音朗读jar 包和开发文档 jacob-1.17-M2 语音朗读jar 包和开发文档

TPS65987D USB PD控制器:从原理到实战的完整设计指南

USB PD(Power Delivery)协议是USB Type-C接口实现高功率快充和数据传输的核心技术标准。其工作原理基于CC(Configuration Channel)引脚的双相标记编码(BMC)通信,通过协商电压和电流,实现高达100W的功率传输。这项技术的核心价值在于统一了充电标准,简化了设备间的互操作性,广泛应用于笔记本电脑、移动电源、扩展坞等设备。TPS65987D作为一款高度集成的USB PD控制器,将复杂的协议处理、电源路径管理和多重保护电路集成于单芯片,显著降低了设计复杂度。通过其可

weixin_30983965的博客 338

搭建Java与Windows的桥梁:一探Java COM Bridge(JACOB)的魅力

在跨平台开发的世界里,Java以其卓越的兼容性和可移植性独树一帜。然而,在涉及到Microsoft Windows原生资源或COM组件时,Java开发者往往需要面临额外的挑战。为了解决这一难题,Java COM Bridge(简称JACOB),这个开源项目应运而生。 JACOB是一个强大的Java库,它巧妙地利用自定义DLL通过JNI(Java Native Interface)进行通信,从而让...

gitblog_00885的博客 1183

结合 Conda 手动安装 RepeatMasker

RepeatMasker 是一个广泛使用的生物信息学工具,用于识别和屏蔽(mask)基因组序列中的 重复序列(repeats) 。在使用过程中需要调用重复序列数据库(Repbase 和 Dfam),如果使用Conda安装的话会出现许多问题,因此推荐手动安装。在此记录我手动安装RepeatMasker的流程,希望对各位同学有所帮助。

m0_65437087的博客 2535

java.com java you_The JACOB Project: A JAva-COM Bridge Now you can call COM Automation from any ...

What Is JACOB?JACOB is a JAVA-COM Bridge that allows you to call COM Automation components from Java. It uses JNI to make native calls into the COM and Win32 libraries. The JACOB project started in 19...

weixin_30086969的博客 5736

CH340驱动安装全攻略:从Windows到MacOS的避坑指南(2025最新版)

本文提供2025年最新版CH340驱动安装全攻略,涵盖Windows、MacOS和Linux三大操作系统。详细解析了驱动安装的核心原理、标准流程,并针对Windows设备管理器报错、MacOS系统安全限制等常见“坑点”提供了深度排错与解决方案,旨在帮助开发者快速稳定地完成USB转串口通信配置。

earth的博客 426

【Python程序开发】湖南省职业院校技能大赛python程序开发赛项样题二

【Python程序开发】湖南省职业院校技能大赛python程序开发赛项样题二

况老师话竞赛&blog 2197

【亲测免费】 JACOB项目的安装和使用教程

JACOB项目的源码仓库包含了以下主要目录: 1. **docs** - 存放项目相关的文档。 2. **lib** - 包含了不同平台(如32位和64位)的Jacob库DLL文件。 3. **samples** - 提供了一些示例代码以展示如何使用Jacob。 4. **src** - 项目的源代码,包括Java类和JNI接口定义。 5. **vstudio/jacob** - Visual ...

gitblog_00405的博客 1733

Unity PSD分层导入插件ps2d原理与实战指南

PSD作为UI设计主流源文件,其图层结构、混合模式、文字矢量属性等核心语义在传统引擎导入中普遍丢失,导致设计还原度低、多语言适配难、运行时不可控。ps2d通过深度解析PSD二进制规范,将图层映射为GameObject树、文字转为TextMeshPro可编辑组件、形状生成矢量Mesh、蒙版与图层样式编译为定制Shader,实现设计意图的精准程序化表达。该方案显著提升UI开发效率,支撑高保真还原、动态修改、分辨率自适应及运行时热重载等工程需求,是Unity中连接设计师与程序员的关键工作流中枢。

weixin_32943857的博客 348

JNI开发之参考资料

IBM:弥补和 COM 的缝隙——发现 Bridge2Java 如何帮助扩展 Java 代码的范围http://www-128.ibm.com/developerworks/cn/java/j-bridge/index.htmlJava进阶:JNI使用技巧点滴http://www.52z.com/info/ArticleView/2004-10-7/Article_View_2561.HtmThe

1385

VIIRS-NPP夜间灯光遥感数据下载和预处理

右侧搜索框搜索“按掩膜提取”,提取出夜光影像中国区域。将其转换为Albers积投影和重采样到400m。点击右上角Export,选择shp格式。最后点export导出就行。点击复制按钮,来到这个。,ctrl + v粘贴。将小于0.3的值置为0。下载好月合成产品后,

热爱分享,热爱记录 1万+

Docker(八):Docker Compose(容器编排) 管理多容器应用—实战案例演示

🟢 Docker(八):Docker Compose(容器编排) 管理多容器应用—实战案例演示

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 6万+

JNI的小结

目前java与dll交互的技术主要有3种:jni,jawin和jacob。Jni(Java Native Interface)是sun提供的java与系统中的原生方法交互的技术(在windows\linux系统中,实现java与native method互调)。目前只能由c/c++实现。后两个都是sourceforge上的开源项目,同时也都是基于jni技术的windows系统上的一个应用库

叶落伤城的专栏 561

机器人动力学仿真软件:V-REP (CoppeliaSim)_(15).仿真项目案例分析

通过以上几个具体的仿真项目案例,我们展示了如何在V-REP (CoppeliaSim)中进行二次开发,实现复杂的机器人动力学仿真任务。这些案例涵盖了六轴机械臂的运动学仿真、移动机器人的路径规划和避障、以及无人机的飞行控制和环境感知。每个项目都通过编写Lua脚本实现了对机器人模型的控制和任务执行,并通过仿真结果分析验证了算法的有效性和系统性能。希望这些案例能够为读者在实际项目中使用V-REP (CoppeliaSim)提供有益的参考和启发。

kkchenjj的博客 1295

Java COM bridge

        If you are looking to integrate Java with COM you have several options: Use The JACOB Project, which is an open-source Java-COM bridge based on JNI. Use The Microsoft Java VM.

生而为人,幸而为人 1542

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java通过jacob操作word的一些实践

前言 JACOB(java -com bridge)是一个 JAVA到微软的COM接口的桥梁。使用JACOB允许任何JVM访问COM对象,从而使JAVA应用程序能够调用COM对象。关于JACOB的很多基础知识网上也是很多文章介绍,我也是根据这些资料进行开发的。粘上两个我保存的文章 jacob的使用方法总结 java操作word文档(jacob) 本文主要是讲解当遇到网上查找不到的word方法时候,需要怎么处理,以及自己使用过程中的注意事项。 正文 1、网上关于JACOB的介绍很多,但是都是基础功能没有官方

l13020227067的博客 1197

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java调用com组件操作word

一、准备工作   先了解一下概念,JACOB 就是 JAVA-COM Bridge的缩写,提供自动化的访问com的功能,也是通过JNI功能访问windows平台下的com组件或者win32系统库的。这是一个开始于 1999年的开源项目的成果,有很多使用者对该项目进行了修改,做出了自己的贡献。     Jacob下载地址:http://sourceforge.net/project/showf...

ChocooM 357

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【亲测免费】 JACOB(JAVA-COM桥接)项目教程

[JACOB](https://github.com/freemansoft/jacob-project) 是一个JAVA-COM桥接库,允许Java应用程序调用Windows平台上的DLL或COM组件。它通过自定义的DLL文件,利用JNI(Java Native Interface)使Java类能够与底层Windows库通信,从而免去开发者编写自定义JNI代码的复杂性。JACOB支持在x86和x...

gitblog_00375的博客 1024

jacob操作office分享

现在的项目中操作word文件比较多,word文件的加密解密,转换为各种格式,插入图片,添加水印、html转word等等各种东西,大家也都知道,java语言是不能直接操作word或者excel的,不像C#,可以调用VBA的类来直接操作office。      目前java也有一些操作office的开源框架,比如poi,这个没怎么研究过,我估摸着它是通过解析office的xml文档模型来操作off

ITNoobie的博客 1586

Jacob简介

一、Jacob 介绍Jacob 是 JAVA-COM Bridge的缩写,是一个中间件,能够提供自动化访问MS系统下COM组件和Win32 libraries的功能。

Seven_Nee的专栏 5834

Java注册COM组件

在Java中注册COM组件通常涉及到使用Java COM桥(也称为JACOB,Java-COM Bridge)来创建和注册COM组件。JACOB是一个允许Java代码创建和使用COM对象的库。

a876106354的博客 3008

Jacob 实现语音播报

JACOB 就是 JAVA-COM Bridge的缩写,语音播报。demo 将jacob-1.14.3-x86.dll或放入32位JDK的bin目录下 或将jacob-1.14.3-x64.dll或放入64位JDK的bin目录下 百度网盘资源链接:https://pan.baidu.com/s/1eRsEubrfFJrMm4oyB3BrQQ 提 取 码:v77k 依赖: <!-- ht...

qq_44836497的博客 934
上一篇: 关于Apache Portable Runtime and Tomcat
下一篇: 对九个超级程序员的采访
wang12
博客等级 码龄24年 39粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值