c++调用jar包

c++调用jar包,第1张

不太懂,我直接复制的,一个C++调用JAR包的实例,希望能帮到你,版权归原戚消作者

一个简单需求:用C++调用Jar包。

实现基本思路:迟高调用CreateProcess API来启动cmd.exe运行jar包。

调用类CJarAppCall。

JarAppCall.h

[cpp] view plain copy 在CODE上查看代码片派生到我的代码片

#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

[cpp] view plain copy 在CODE上查看代码片派生到我的代码片

#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

}

调用示例

[cpp] view plain copy 在CODE上查看代码片派生到我的代码片

{

CString strJarDir = _T("F:\\JarRunTest")

CString strJarName = _T("run.jar")

CJarAppCall jarCall

if (!jarCall.Run(strJarDir, strJarName))

{

//启动失败

AfxMessageBox(_T("启动失败"))

return

}

AfxMessageBox(_T("调用完成"))

}

ShellExecute(this->m_hWnd,"open","C:\\Client.jar","javaw.exe -Xmx128m -jar Client.jar -RSystemAdmin"缺槐慧弊,""伏碧友,SW_SHOW)

如果命令行备激可以解决的问题,都不算问纤冲题。

比如你可以在c语言中调用system("java -jar xxx.jar")

当然,这种方法毁滚歼很坑爹。需要用文件或者网络来实现数据的传输和交换的介质。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8202834.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存