`

Java进程通讯及gcj将jar转为exe

阅读更多
Main.java
/**
 * 管道进程通讯, to exe.jar
 * @author RuiLin.Xie - xKF24276
 *
 * 找时间扩展为可传对象
 */
public class Main
{

	public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException
	{
		//执行程序
		Process process = Runtime.getRuntime().exec("java -cp c:/exe.jar; com.java.exe.Exe");
		
		//发送消息
		OutputStream out = process.getOutputStream();
		out.write("10000".getBytes());
		out.flush();
		//必需关闭输入流后才能得到返回消息
		out.close();
		
		//jdk1.5以上版本
		//BufferedInputStream buf = new BufferedInputStream(process.getInputStream());
        //Scanner s = new Scanner(buf);
		//jdk1.4版本
		//读取程序返回消息
		InputStreamReader isr = new InputStreamReader(process.getInputStream());
		BufferedReader s = new BufferedReader(isr);
		String line = null;
		StringBuffer all = new StringBuffer();
		while((line = s.readLine()) != null)
		{
			all.append(line);
		}
		s.close();
		isr.close();
		
		//显示返回消息
		System.out.println(all.toString());
	}



Exe.java
/**
 * 模仿exe程序,导出为jar包放到 c:\exe.jar
 * @author RuiLin.Xie - xKF24276
 *
 */
public class Exe
{

	public static void main(String[] args) throws IOException
	{
		//准备接收父程序消息
		InputStream in = System.in;
		InputStreamReader isr = new InputStreamReader(in);
		BufferedReader s = new BufferedReader(isr);
		String line = null;
		StringBuffer all = new StringBuffer();
		
		//接收父程序消息
		while((line = s.readLine()) != null)
		{
			all.append(line);
		}
		s.close();
		isr.close();
		//当父程序关闭输入流时,执行操作
		
		//执行对应任务
		int cmd = Integer.parseInt(all.toString());
		String ret = null;
		if(cmd == 10000)
		{
			ret = sayHello(cmd);
		}
		else
		{
			ret = errorCmd(cmd);
		}
		
		//返回消息给父程序
		OutputStream out = System.out;
		out.write(ret.getBytes());
		out.flush();
		out.close();
	}
	
	/**
	 * 说hello
	 * @param name
	 * @return
	 */
	public static String sayHello(int cmd)
	{
		return "hello. success :" + cmd;
	}
	
	/**
	 * 找不到命令
	 * @param entity
	 * @return
	 */
	public static String errorCmd(int cmd)
	{
		return "cmd not found :" + cmd;
	}

}


参考文档:

GCJ编译java程序的头痛问题
http://www.cnblogs.com/huqingyu/archive/2004/11/13/63317.html

将java库转换为.net库(转载)
http://www.cnblogs.com/chegan/archive/2005/10/11/252103.html

JAVA IO之管道流总结大全
http://blog.chinaunix.net/u1/55983/showart_521503.html

共享内存在Java中的实现和应用
http://www.ibm.com/developerworks/cn/java/l-memshare/index.html
分享到:
评论

相关推荐

    gcj02与wgs84之间的转换jar包

    demo: public static void main(String[] args) { GCJ02ToWGS84 a=new GCJ02ToWGS84(); HashMap,Double> hm= a.delta(22.456, 114.345); System.out.println(hm); }

    收集的java坐标转换WGS84、GCJ02B、BD09及纠偏

    在`CoordinateConvert.java`文件中,可能包含将WGS84坐标转换为GCJ-02和BD-09的算法,以及可能的反向转换。 `EvilTransform.java`这个名字暗示了它可能涉及到了坐标加密和解密的过程。在GCJ-02坐标系中,由于采用了...

    GCJ02转WGS84

    `ModifyOffset.java`则可能是Java源代码文件,实现了GCJ02到WGS84的转换算法。代码可能会使用读取`axisoffset.dat`中的数据,然后根据一定的数学模型,对输入的GCJ02坐标进行处理,以得到对应的WGS84坐标。转换过程...

    wgs84转gcj02/gcj02转wgs84

    GPS经纬度偏移java端实现,wgs84转gcj02/gcj02转wgs84,亲测有效,稍微有点小偏差!

    将Java程序作成exe文件的N种方法

    在IT行业中,有时我们需要将Java程序转换为可执行的Windows应用程序,即.exe文件,以便非开发人员能够方便地运行而不必安装Java环境。这个过程通常称为“打包”或“封装”。下面将详细介绍几种将Java程序转化为.exe...

    WGS84 转为GCJ02的excel表格转换的公式

    WGS84 转为GCJ02的excel表格转换的公式 将WGS84坐标系转换为GCJ02坐标系(也称为火星坐标系)涉及到复杂的数学计算。虽然Excel本身并不直接支持这些地理坐标转换,但你可以通过编写自定义公式来实现这一点。以下是一...

    BD09 坐标 WGS84 坐标 GCJ02 坐标的相互转换

    本主题将深入探讨“BD09坐标”、“WGS84坐标”和“GCJ02坐标”之间的相互转换,以及如何进行这些转换的源码实现。 首先,我们来了解这三个坐标系统: 1. **WGS84坐标系统**:全球定位系统(GPS)采用的标准坐标...

    如何把JAVA程序封装成EXE文件

    GCJ是一种特殊的编译器,它可以将Java源代码编译成本地机器码,从而生成可以在没有JVM环境下运行的EXE文件。这种方法的优点在于生成的程序可以脱离JVM环境运行,缺点则是生成的EXE文件体积较大,并且可能存在兼容性...

    Java实现百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换

    Java实现百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换

    java转exe可执行程序

    例如,常见的工具有Launch4j、JAR2EXE、GCJ等。这些工具的工作原理大致是将Java字节码转换为本地机器代码,并将其封装在一个Windows可执行文件中,同时确保运行时能够加载JVM并执行Java代码。 转换过程通常分为以下...

    Java程序编译成exe文件的2个方法

    然而,为了使非Java环境下的用户也能方便地执行Java程序,开发者可以选择将其编译成可执行的Windows EXE文件。这里有两个主要方法将Java程序转换为EXE文件: 1. **创建可执行的JAR文件包** JAR(Java Archive)...

    gcj.pdf

    根据提供的文件信息,我们可以推断出这是一份关于GNU gcj(GNU Compiler for the Java Programming Language)的手册或文档。接下来将对文档标题、描述、标签以及部分内容进行深入解析,并提炼出关键知识点。 ### ...

    经纬度坐标转换(WGS84转GCJ02、BD09)

    国际通用WGS84(lng,lat) 转高德GCJ02(lng,lat)、百度BD09(lng,lat)

    java源码博客-WGS84GCJ02Conversion:基于此博客中源代码的WGS84和GCJ02转换的Java实现:http://blo

    这篇文章将详细探讨基于给定博客中的源代码实现的WGS84到GCJ02的转换方法,并以此为出发点,深入讲解相关知识点。 首先,WGS84(World Geodetic System 1984)是国际上广泛使用的地心地固坐标系,它的原点位于地球...

    57.(leaflet篇)leaflet高德坐标转天地图坐标(gcj02转大地2000).zip

    return proj4('GCJ02', 'WGS84', [gcj02Lon, gcj02Lat]); } function wgs84ToCgcs2000(wgs84Lon, wgs84Lat) { return proj4('WGS84', 'CGCS2000', [wgs84Lon, wgs84Lat]); } ``` 在实际应用中,你可能需要将这些...

    linux安装Java jdk

    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME JAVA_BIN PATH CLASSPATH ``` 让 `/etc/profile` 文件修改后立即生效,可以使用以下命令:`# . /etc/profile` 卸载 JDK ...

    百度(bd09),火星(GCJ-02),大地(wgs84)坐标系转换

    Java实现windows与Linux平台上的百度坐标系,火星坐标系与大地坐标系之间的相互转换,有不能布署成功的请在线私我

    GCJ2WGSUtils.java

    火星坐标系GCJ2转换成WGS84坐标系

    GPS坐标转地图坐标java版算法(纠偏)

    gps坐标转地图坐标算法,纠偏算法。GPS坐标就是传说中大地坐标系统(WGS-84),...所以大家都会使用GCJ-02坐标系,如腾讯搜搜地图、搜狐搜狗地图、阿里云地图、高德MapABC地图、灵图51ditu地图。百度坐标系统是BD-09。

    java_adnroid_GPS坐标转换工具类的标准代码_百度坐标系 GCJ-02 WGS84 经纬度转换

    火星坐标系(GCJ-02)转百度坐标系(BD-09)(火星坐标经度,火星坐标纬度),百度坐标数组 百度坐标系(BD-09)转火星坐标系(GCJ-02)(百度坐标纬度,百度坐标经度),火星坐标数组 WGS84转GCJ02(火星坐标系)(WGS84坐标系的经度,...

Global site tag (gtag.js) - Google Analytics