C++调用Java的Jar包
一个简单需求:用C++调用Jar包。
实现基本思路:调用CreateProcess API来启动cmd.exe执行jar包。
调用类CJarAppCall。
JarAppCall.h
#pragma once class CJarAppCall
{
public:
CJarAppCall(void);
~CJarAppCall(void); /*
@brief 运行Jar包调用,等待运行完毕返回
@param[in] strJarDir jar包文件夹
@param[in] strJarName jar包名称
@return 运行是否成功
*/
bool Run(const CString& strJarDir, const CString& strJarName); private:
bool CallApp(const CString& strJarName);
};
JarAppCall.cpp
#include "StdAfx.h"
#include "JarAppCall.h" CJarAppCall::CJarAppCall(void)
{
} CJarAppCall::~CJarAppCall(void)
{
} bool CJarAppCall::Run(const CString& strJarDir, const CString& strJarName)
{
//缓存当前文件夹
WCHAR sOldDir[MAX_PATH] = {0};
GetCurrentDirectory(MAX_PATH, sOldDir); //设置当前文件夹为jar包文件夹
SetCurrentDirectory(strJarDir);
bool bCalRest = CallApp(strJarName);
//还原当前文件夹
SetCurrentDirectory(sOldDir); return bCalRest;
} bool CJarAppCall::CallApp(const CString& strJarName)
{
WCHAR sSysDir[MAX_PATH] = {0};
GetSystemDirectory(sSysDir, MAX_PATH);
CString strFullPath = sSysDir;
strFullPath += _T("\\cmd.exe");
CString strCmdLine = _T(" /C ");
strCmdLine += _T("java -jar ");
strCmdLine += strJarName; STARTUPINFO si = {sizeof(si)};
PROCESS_INFORMATION pi;
BOOL bRunProgram = CreateProcess(strFullPath.GetBuffer(),
strCmdLine.GetBuffer(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); strFullPath.ReleaseBuffer();
strCmdLine.ReleaseBuffer(); if (!bRunProgram)
{
return false;
} // 等待程序结束
WaitForSingleObject(pi.hProcess,INFINITE);
CloseHandle(pi.hProcess); return true;
}
调用演示样例
{
CString strJarDir = _T("F:\\JarRunTest");
CString strJarName = _T("run.jar");
CJarAppCall jarCall;
if (!jarCall.Run(strJarDir, strJarName))
{
//启动失败
AfxMessageBox(_T("启动失败"));
return;
}
AfxMessageBox(_T("调用完毕"));
}
C++调用Java的Jar包的更多相关文章
- jmeter接口测试-调用java的jar包-csv参数化请求-BeanShellPreProcessor生成验签作为请求验证参数-中文乱码----实战
背景及思路: 需求:要做 创建新卡 接口的测试,要求: 1. 不需要每次手动修改请求参数. 方案:文中先用excle将数据准备好,导出为csv格式,再用jmeter的csv请求进行参数化 2. 卡号需 ...
- PHP通过php-java-bridge调用JAVA的jar包里class类
正 文: 有的时候我们需要在PHP里调用JAVA平台封装好的jar包里的class类和方法,一般飘易推荐的做法是采用php-java-bridge做桥接,本文就来介绍一下大致的实现方法. 先简单说 ...
- Python3.5调用Java的jar包
声明:这个是在一个博客上看到的,过了俩星期了突然找不到原博客了,如果原来的博主看到,请联系我删除~ 主要是怕自己忘记,所以在此记录: 环境 Python3.5+JDK1.8 安装命令:python3 ...
- 使用 jpype 库实现 Python 调用 java 的 jar 包中的功能
一.what's the JPype JPype 是一个能够让 python 代码方便地调用 Java 代码的工具.在某些时候 java 的能力更强,我们可以用 java 写一个模块的功能然后用 Py ...
- 分享:根据webservice WSDL地址自动生成java调用代码及JAR包
分享:根据webservice WSDL地址自动生成java调用代码及JAR包使用步骤:一.安装java 并配置JAVA_HOME 及 path二.安装ANT 并配置ANT_HOME三.解压WsdlT ...
- Java中Jar包调用命令行运行编译
原文链接:https://www.toutiao.com/i6491877373942694413/ 记事本编写两个简单的类 文件结构目录 启动DOS,进入文件所在目录 进入到class所在文件的目录 ...
- Java常用jar包用途
Java常用jar包用途: USAGE INDEX JAR NAME USAGE 1 ASM asm-2.2.3.jar ASM字节码库 2 ASM asm-commons-2.2.3.jar ASM ...
- (转)java 从jar包中读取资源文件
(转)java 从jar包中读取资源文件 博客分类: java 源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件 ...
- Kettle中调用用户自定义的jar包
ETL工具断断续续的也接触了 Informatica,Kettle, SSIS,个人感觉Info很强大但是也很贵,而且有着一些神秘感.Kettle 4.0版本以来已经有了User defined j ...
随机推荐
- Java HMAC-SHA1加密算法的实现
public static String hamcsha1(byte[] data, byte[] key) { try { SecretKeySpec signingKey = new Secret ...
- codeforces 444 C. DZY Loves Colors(线段树)
题目大意: 1 l r x操作 讲 [l,r]上的节点涂成x颜色,而且每一个节点的值都加上 |y-x| y为涂之前的颜色 2 l r 操作,求出[l,r]上的和. 思路分析: 假设一个区间为同样的颜 ...
- python笔记25-mock-server之moco
前言 mock除了用在单元测试过程中,还有一个用途,当前端开发在开发页面的时候,需要服务端提供API接口 此时服务端没开发完成,或者说没搭建测试环境,这个时候前端开发会自己mock一个api服务端,自 ...
- iOS获取网络类型的四种方法
Reachability类只能区分WIFI和WWAN类型,却无法区分2G网和3G网. 网上也有些方法,却都存在Bug. 经过网上查找资料和测试,基本上总结了以下几种方法: 1.使用导航栏的方式:(私有 ...
- vs 默认的INC和LIB
用户环境变量添加 INCLUDE=C:\inc;c:\inc2 LIB=c:\lib 编辑文件C:\Users\Administrator\AppData\Local\Microsoft\MSBuil ...
- select点击option获取文本输入框的焦点事件
HTML文件: <select id="secOrderNum" style="margin-bottom:10px;width:90px;" data- ...
- 第一章 Java常用集合类总览
1.Java最常用的集合类 Collection接口 List接口(允许有重复元素):ArrayList.LinkedList.Vector.Stack Set接口(不允许有重复元素,可用于去重操作) ...
- [Ajax] AJAX初体验之-在博客中添加无刷新搜索
现在博客很流行,相信应该上网时间稍微长点的朋友都会在这或者在那的有一个自己的博客.对于一些有一定能力的朋友,可能更喜欢自己去下载一个博客程序来架设一个自己的博客,而不是使用一些博客网站提供的服务.而大 ...
- 计算两端yuv视频流中每一帧的ssim值
方法同上一篇,仅仅不多这里在计算的时候用了opencv1的接口,出现了一些问题.最后总算攻克了. 程序: #include <stdlib.h> #include <stdio.h& ...
- C#.NET常见问题(FAQ)-如何把资源嵌入到项目中
首先把图像的资源添加到项目中, 选择资源文件(常规),修改一下这个资源的名字(比如叫做ButtonPic) 我们假定已经把图像放到了项目的某个文件夹下(比如Pic文件夹下,注意不是bin目录下 ...