【easyCraft项目】开发笔记(三):McVersion类诞生!

本文介绍了一个简单的C++类McVersion,该类用于管理Java应用程序的版本和路径,并通过设置环境变量来运行特定版本的Java。文章展示了如何创建McVersion类、设置版本及路径信息,并最终执行Java程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经过努力……终于搞定了调用java的问题!


一个简单的McVersion类出现,每个McVersion对象就是一个版本,每个版本有自己的版本号以及路径。


文件McVersion.h

#ifndef __MCVERSION_H__
#define __MCVERSION_H__
#include <string>
#include <windows.h>
#include <iostream>
#include <direct.h>

class McVersion
{
private:
	char* version;
	char* path;
	bool  usejava;  //如果usejava为true则设置环境变量为程序主文件夹下的 jre6\bin 目录
public:
	McVersion();
	std::string ShowVersion();
	void SetValues(char* ver,char* pat,bool jav);
	void Runme();
};

#endif

文件McVersion.cpp

#include "McVersion.h"

McVersion::McVersion()
{
	version = "1.1";
	path = "\\";
	usejava = true;
}

std::string McVersion::ShowVersion()
{
	std::string show="当前版本:";
	show += version;
	show += " 当前路径:";
	show += path;
	show += " ";

	return show;
}

void McVersion::SetValues(char* ver,char* pat,bool jav)
{
	version = ver;
	path = pat;
	usejava = jav;
}

void McVersion::Runme()
{
	std::string folder = path;
	int stat;
	if(usejava)
	{
		stat = _putenv("JAVA_HOME=.\\jre6");
		stat = _putenv("PATH=.\\jre6\\bin");
	}

	std::string run;
	run="APPDATA=.\\"+folder;
	stat = _putenv(run.c_str());

	run="java -jar .\\"+folder;
	run+="\\Minecraft.jar";
	WinExec(run.c_str(), SW_HIDE);
}

测试主程序

#include "McVersion.h"
using namespace std;

int main(void)
{
	McVersion c;
	c.SetValues("1.0", "v1.0", 1);
	c.Runme();
}

tips:

函数 _putenv() 的旧形式是 putenv() ,用于设置环境变量的值。用法:_putenv("PATH=.\\jre6\\bin"); (感谢 leafallen 对这个问题的贡献,草根英雄1 对此也有帮助http://zhidao.baidu.com/question/379418763.html

在这里调用java的方式是采用 _putenv 设置环境变量后使用 WinExec 执行 java 并访问 指定目录的 .jar 文件。当然还有更高明的通过CreateProcess函数以及管道,我本着实用至上的原则就没有去查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜庄湖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值