GCJ让java程序脱离jre执行

一 首先,下载如下软件:
1 http://sourceforge.net/projects/mingw/
MinGW-5.1.3.exe

2 http://sourceforge.net/projects/gnuwin32/
libiconv-1.9.2-1-bin.zip
libiconv-1.9.2-1-lib.zip

以上只是当时的最新版,随着版本更新,请选择最新版下载。

二 安装
1 安装mingGW,以下选项一定要选择:
mingw-runtime
mingw32-make
gcc-java
其他默认即可。
2 安装libiconv,分别解压libiconv-1.9.2-1-bin.zip和libiconv-1.9.2-1-lib.zip到mingGW安装目录即可。

三 准备环境
1 把minggw的bin目录加到path系统变量中中;
2 使用gcj编译java程序,需要屏蔽掉jdk的环境变量,为了不影响jdk的正常使用,编写如下bat,命名为j2e.bat备用:

@echo off
Set CLASSPATH=
gcj -c %1.java -o %1.o
gcj --main=%1 -o %1.exe %1.o

3 编写java类,内容如下:
public class Hello
{
    public static void main(String[] args) throws Exception
    {
        System.out.println("Hello exe4j");
    }
}

4 编译:
运行j2e Hello,程序生成了Hello.exe,细心查看发现这个文件比较大,因为他把jre也打包进来了。

5 部署:
是不是把这个hello.exe拿走就可以了吗??不行,还要带上libiconv2.dll,不要忘记。 

时间: 2024-08-30 15:07:28

GCJ让java程序脱离jre执行的相关文章

利用PAPI接口监测Java程序的硬件执行特征

简介:PAPI 是一组用于访问处理器硬件性能计数器的本地接口,利用这一接口对 Java 程序的硬件执 行特征进行监测将有助于在计算机系统的硬件层上发现程序性能问题的根源所在.本文介绍了 PAPI 的重 要概念及其常用接口,分析了将其应用于 Java 程序性能测评的要点和难点,提出一种基于 JVMTI 接口 的方法实现了利用 PAPI 接口监测 Java 程序的运行时硬件执行特征. PAPI 接口概览 在计算机系统的硬件层对 Java 程序的性能进行测评与分析,有助于发现程序 性能问题的根源所在.

java-如何将Java程序与Linux版本的JRE打包并且在linux下能运行

问题描述 如何将Java程序与Linux版本的JRE打包并且在linux下能运行 在Windows下有很多方法来实现Java程序与JRE的打包发布.这样在目标机器上就不用预先安装JRE或者JDK了. 现在我需要在Linux下做同样的事情,有以下限制条件: 1.打包出来的程序要给多个地方用 2.目标操作系统上已经安装了其它版本的JDK或者JRE,但是不能确定其版本,而且也不能改动其版本(也就是不能装新的上去,或卸载原来的). 3.不能使用 InstallAnywhere 等第三方程序,只能是JRE

Java程序执行Linux命令

java程序中要执行linux命令主要依赖2个类:Process和Runtime 首先看一下Process类: [plain] view plaincopyprint? ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,   该实例可用来控制进程并获得相关信息.Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.   检查进程的退出状态以及销毁(杀掉)进程的方法.   创建进程的方法可能无法

java-Java 程序不能继续执行,出了问题求解答这是啥原因

问题描述 Java 程序不能继续执行,出了问题求解答这是啥原因 解决方案 解决方案二: 程序没问题啊,出错除非是输入的数据类型不对. 解决方案三: 发错误看下不就知道了....不能继续执行是什么意思,你想要循环执行输入吗? 解决方案四: 你这段代码是一直接收输入,但是没有判断什么时候结束输入,真的可以吗,这样应该不能继续执行吧?没用过Scanner,所以也不知道我的理解对不对,仅是个人理解,如果错了请指正 解决方案五: 抛什么错了,注意.性别必须是数值类型.. 解决方案六: 大哥,性别也是int

求助, Java程序删除自己。。。

问题描述 求助:我写了个Java程序,其中有个功能需要实现删除自己,我自己的思路是通过此Java程序生成bat文件然后通过bat文件找到此程序而实现删除自己,但是在调用bat文件的时候自己还处于运行状态,这是没办法删除的,后来想了想通过bat文件中的dos命令实现定时删除,但是问题又来了找了好多资料只有通过鼠标在控制面板里面设置系统任务,就是找不到能通过代码定时删除的....求助如果能提供dos定时删除的命令或者另外其他的办法都可以只要能实现我这个功能,再次非常感谢您!我的分数即使送完也没关系,

eclipse导出的java程序jar包无法运行

问题描述 eclipse导出的java程序jar包无法运行 毕业设计邮件系统,用java编写的,但导出的jar包无法运行 直接双击jar包如下截图 用开始运行cmd运行截图如下 解决方案 eclipse下正常运行的话..就是导出jar包的时候出了问题. 解决方案二: 从eclipse导出java程序的jar包单独运行如何让Java程序脱离Eclipse运行(导出生成jar包)java程序在eclipse中打jar包 解决方案三: 异常显示缺少依赖的第三方jar,导出时也需要将那些依赖的jar一起

让Java程序自带JRE

程序   用Java开发程序,发布时总要考虑的问题就是怎么在使用者的机器上装好JRE.要考虑的问题很多:使用者有没有能力独自安装JRE,使用者已有的JRE和我们需要的版本是不是一致,会不会出现版本问题,等等.使用.NET要考虑的问题就少些.现在.NET CLR似乎已经很普及了,看好多D版的Win XP都会自己安装最新的.NET CLR,而且似乎它的安装界面也比JRE友好些.彻底解决安装JRE的问题的方案,就是让我们的应用程序自己背着JRE!这样,我们的程序就像传统的Win32应用程序一样,双击就

J2SE综合:浅谈java程序发布之jre篇

Java开发程序,发布时总要考虑的问题就是怎么在使用者的机器上装好JRE.要考虑的问题很多:使用者有没有能力独自安装JRE,使用者已有的 JRE 和我们需要的版本是不是一致,会不会出现版本问题,等等.使用.NET要考虑的问题就少些.现在.NET CLR似乎已经很普及了,看好多D版的 Win XP都会自己安装最新的.NET CLR,而且似乎它的安装界面也比JRE友好些.彻底解决安装JRE的问题的方案,就是让我们的应用程序自己背着JRE!这样,我们的程序就像传统的Win32应用程序一样,双击就可以执

如何让EditPlus可以编译执行Java程序

编译|程序|执行 在 USER TOOLS中选:Add Tool>>1.配置JAVACMenu Text:javacCommand:C:\jdk1.3.1\in\javac.exeArgument:$(FileName)Initial Derictory:$(FileDir)选中 Capture output2.配置JAVAMenu Text:javaCommand:C:\jdk1.3.1\in\java.exeArgument:$(FileNameNoExt)Initial Derictor