可否把一个.java文件编译成exe,并且能完全脱离JVM执行,也就是这个exe可以放到没有JRE的机器上执行?

解决方案 »

  1.   

    这是个问题用Java写出的程序能否像C#,C++写出的那样,有个exe文件。那样运行就更方便了。我也来顶一下
      

  2.   

    都需要jvm即使打包成exe,如eclipse富客户端产品也要jvm支持,可以把jvm一起打包。
      

  3.   

    > 可否把一个.java文件编译成exe,并且能完全脱离JVM执行,
    > 也就是这个exe可以放到没有JRE的机器上执行?这个要看你怎么理解。首先说,把 Java 程序搞成一个 exe,到一个“没有预装 JRE”的机器上就能直接运行,这个是完全可以做到的。但是,真正意义上的“完全脱离JVM”是不可能的,上面说的做法也不过是在 exe 中以某种形式带了个 JVM 而已。
      

  4.   

    "首先说,把 Java 程序搞成一个 exe,到一个“没有预装 JRE”的机器上就能直接运行,这个是完全可以做到的"
    ===================================
    只要这样就可以了,怎么打包呢?
    谢谢
      

  5.   

    如果你能接受用 bat 的方法,可以做这样一个 bat 文件:set JAVA_HOME="%cd%\jre"
    "%cd%\jre\bin\java.exe" -classpath ...........如果你一定要做成 .exe,那考虑用 JBuilder 或者什么的打包工具吧。
      

  6.   

    可以用nativeJ打包成exe
    jre是必须的
    一些大公司的产品,往往会把jre捆绑在安装包中。
      

  7.   

    不管用什么工具,只要能打包称exe即可,即可以在“没有预装 JRE”的机器上就能直接运行即可
      

  8.   

    这JAVA把自己说得那么好,连这点都最不到,真是郁闷啊
    delphi VB,VC都可以的啊
      

  9.   

    用InstallAnyWhere打包,可以将jre打包到exe中。
      

  10.   

    用InstallAnyWhere吧,它可以把JRE一起打包。安装的时候自动为你安装JRE。java是不可能脱离jre运行的。
      

  11.   

    ..................................只能是把jre一起打包!
      

  12.   

    JBuilder可以吗?
    ===============================
    JBuilder貌似可以只是因为下面自带了jdk1.4
    那里面就有你熟悉的jre了。。
      

  13.   

    可以, 把jre打入包内, 用installanywhere就可以
      

  14.   

    LZ您太有才了
    LZ您觉得delphi VB,VC这些好,干吗用JAVA写代码呀?VC VB换个平台能用吗?
    打包成EXE可以 运行 好象需要JRE
      

  15.   

    C#你个头你用C#写的程序还不是要.NET FrameworkXP都没有预装...而且用C#就意味着你愿意限制在Windows平台下
      

  16.   

    弱弱地问一句
    c#只能用在Windows平台下吗?
      

  17.   

    -_-||........
    可怜的,,,拼死拼活终于弄了个跨平台的东东出来..楼主愣是要绑死为.exe````
    还想抛弃生死与共的JVM...太不厚道了````````````
    把JRE也压进去就行了..................
      

  18.   

    不要说得C#好像很了不起似的,运行也需要.Net的Framework,对于干净的XP系统来说也是得需要安装的
      

  19.   


    http://blog.csdn.net/qxbnit/archive/2007/03/22/1537901.aspx请看我的BLOG~,里面有介绍~~
      

  20.   

    转成纯EXE文件也是可以做到的,,方法就是自己实现把.class字节码转成X86汇编.
    其他的一般要么就是封装.bat方式,,要么就是在jar之外套个exe(如楼上说的j2e),这些都需要jre支持.
      

  21.   

    楼主认为.exe就可以跨平台了??
    估计楼主就知道dos和windows这俩操作系统。
    请问楼主,linux下的可执行文件的扩展名是什么?
      

  22.   

    我知道楼主的意思,你是说要转换成像EXE那样的东西而不是真正的EXE,可以脱离JRE,但是不能脱离JAVA虚拟机吧?
      

  23.   

    这JAVA把自己说得那么好,连这点都最不到,真是郁闷啊
    delphi VB,VC都可以的啊==================
    VB也是需要runtime的
      

  24.   

    用C#也得把.net framework打包进去
      

  25.   

    ATGC
       
    这JAVA把自己说得那么好,连这点都最不到,真是郁闷啊
    delphi VB,VC都可以的啊--------------------------------------------------------
    Java  跨平台,你说的那些好像不可以吧
      
     
      

  26.   

    LZ去玩C吧 ,JAVA永远离不开JVM
      

  27.   

    那要不做成.bat文件!^_^,和exe效果差不多啊!
      

  28.   

    我以前用 InstallAnywhere 把 java 程序打成一个单一的 .exe 文件,但是在打包过程中其实已经将JRE包含进去了。具体你下一个InstallAnywhere, 试试打包一个程序就明白了。所以说看起来好像可以不需要JRE而直接运行,可是实际上还是没有脱离java virtual machine.
      

  29.   

    "LZ您太有才了
    LZ您觉得delphi VB,VC这些好,干吗用JAVA写代码呀?VC VB换个平台能用吗?
    打包成EXE可以 运行 好象需要JRE"
    =======================================
    小的愚沌,问的问题比较幼稚,让您见笑了
      

  30.   

    “-_-||........
    可怜的,,,拼死拼活终于弄了个跨平台的东东出来..楼主愣是要绑死为.exe````
    还想抛弃生死与共的JVM...太不厚道了````````````
    把JRE也压进去就行了..................”
    ============================
    只是想讨教一下,这和厚道不厚道有什么关系???
      

  31.   

    “Java  跨平台,你说的那些好像不可以吧”
    ====================
    是的,不过任何东西都是相对的,java的跨平台,也是要依赖不同OS的JVM的跨平台也不是java独有的技术
    perl的跨平台也做得很好,在win上的代码,一般可以直接到UNIX执行
      

  32.   

    不可行!
    什么是exe?你没有搞清楚吧。你说的可执行文件,那相当于系统加载了一些库来执行这个exe。
    就像java的class文件需要在系统(jvm)中运行一样。
      

  33.   

    我知道有一个工具叫exe4j可以实现你说的功能,感兴趣的话可以搜索以下 :)
      

  34.   

    唯一的方法,使用gcj编译,但比较麻烦。
      

  35.   

    ATGC(花开蝶舞,木秀鸟栖)
    ------------------------------------------
    perl 和 Java 比,你真幽默,一个是解释型语言,一个叫纯脚本,一个静态语言、一个是动态。风牛马不相依。我把你和某种动物相比,你恐怕也不原意吧
      

  36.   

    "楼主认为.exe就可以跨平台了??
    估计楼主就知道dos和windows这俩操作系统。
    请问楼主,linux下的可执行文件的扩展名是什么?"
    =================================================
    我什么时候说过exe可以跨平台了?
    就知道dos和window又怎么了?有过错吗?
    您知道linux?unix?又怎么了呢?Linux是您写的吗?Linux下的可执行文件需要扩展名吗?您这话问的?我想这里是大家讨论问题的地方,别人不知道的来这里讨教,不是来听你训话的
    您就算是才高8斗,可在帮组别人的时候,也没必要那么居高临下吧。。
    您没有必要这么教训人吧?俺问问题,您可以不回答。。您并没有义务回答
    可是你既然要回答,希望您尊重别人,这样才会赢得别人对你的尊重!!!
      

  37.   

    “perl 和 Java 比,你真幽默,一个是解释型语言,一个叫纯脚本,一个静态语言、一个是动态。风牛马不相依。我把你和某种动物相比,你恐怕也不原意吧

    ============================================================
    希望你讲话文明一点!!!
    我说跨平台,这和解释型,动态,静态有什么关系吗?BTW: 难道您就不是动物?
      

  38.   

    TO joyous希望您讲话文明一点!!
    这里是讨论技术的地方,就算别人不懂,您也没有必要侮辱,调侃吧?
    请您自重!!
      

  39.   

    正好笑脱离的JVM的Java程序,还是Java程序吗?
      

  40.   

    to k1347() 
    =============
    让您见笑了,你是大侠,咱是菜鸟
      

  41.   

    VB\VC\C#编出来的程序也不是打成exe的就能用了呀,也得靠Framework呀!~只不过大家用WINDOWS系统的多。装的时候连带Framework敢装进去了呀。你如果把。NET编的程序放到LINUX里,好像也不能运行吧!~
      

  42.   

    回复人:k1347() ( ) 信誉:100 2007-3-31 19:19:25 得分:0
    ?
    正好笑脱离的JVM的Java程序,还是Java程序吗?----------------------
    说得好,所以我很早就建议楼主“建议考虑使用c#编程.”
      

  43.   

    属于那种平时被人欺负惯的,人家说句话稍微不小心就会被认为不尊重的,过于敏感了吧?我只是想矫正楼主大人的观点而已。如果你有什么不爽,当我没说。你愿意搞个迷你型Windows可以跑在Unxi上,估计exe文件也可以跨Unix平台了。另外,Java是解释型语言,不能“编译”。
      

  44.   

    不可能 
    没用 jvm java程序就不可能运行
    JBuilder 可以把java程序 打成 exe 但那也只是形象神不像
    后台运行还是离不开虚拟机
      

  45.   

    to qq7338367(深秋小雨:承受所有的悲喜 继续存在的意义照您的观点,被人欺负的人反而有错了,而欺负人的人倒是有道理了。。
    我只是说,您既然要回答别人的问题,也要好好说,要么就别回答。
    要知道,您也不是天生就会java的,这世界上您不知道的东西多了。
      

  46.   

    我觉得有些问题是需要更正一下观念的~!
    delphi VB,VC系列的不是不需要虚拟机,是微软已经把虚拟机集成到Windows系统内了.
    同时那些说什么delphi VB,VC不用的需要想一下,跨平台最基本的东西是什么~!
      

  47.   

    lz的意思是不是想做Win32程序的开发?用Delphi就很好,面向对象的
      

  48.   

    to insiku(tmd 越学越弱 不懂的太多了"只是您不知道的东西太不应该了"
    ===============================
    不知道一门技术,不知道一些知识,这有什么不应该的吗?
    试问您是否知道所有编程语言啊?
    您是否知道所有计算机相关的知识啊?
    难道搞计算的,不知道java的基本只是,就是不应该了?
    您一生下来就会java了?
      

  49.   

    楼猪装B了:1.你问问题还不允许人家回答?
    2.你答复人家还不是语言偏激?有什么资格说别人答你问题偏激?
    3.不懂不是你的错,出来乱搞就是你的不对了!JAVA就是JAVA吧,你偏要把它变成C++,你以为是谁啊,几斤几两自己拈量。
    4.答复一些无关的问题这么勤快,你学习这么勤快早就放弃把JAVA打包成EXE的想法了。
    5.JAVA的JAR格式与Windows的EXE格式只是后辍名不一样罢了。
    6......
    .....
    n.后面的人你说我说不说得对啊?!那就顶吧!
      

  50.   

    to inthistime(共此时)鄙视你的为人!!鄙视你的污言秽语!!回答问题也要言语文明,我提问题自然是要别人回答,可不是来受辱的!
    请您自重!
    什么几斤几两?我乱搞什么了,我会向管理员投投诉你的!
      

  51.   

    ATGC(花开蝶舞,木秀鸟栖) ( ) 信誉:100    Blog  2007-04-02 11:24:24  得分: 0  
     
     
       to insiku(tmd 越学越弱 不懂的太多了"只是您不知道的东西太不应该了"
    ===============================
    不知道一门技术,不知道一些知识,这有什么不应该的吗?
    试问您是否知道所有编程语言啊?
    您是否知道所有计算机相关的知识啊?
    难道搞计算的,不知道java的基本只是,就是不应该了?
    您一生下来就会java了?===============================================================不要给自己找理由 那所有人都不是一生来就会的 那最初的那些先驱者是谁教他们 谁给他们指点??
    难道是sun公司的开发人员?恐怕中国没有几个人有这种荣幸能有机会结识这些人
    可幸的是 这世界上还有一种东西叫自学, 有书 有资料 还识字就可以了
    我承认我不懂的东西很多 不懂并不可怕 我识字 我会学 不懂的东西就会搞懂
    不知道您这位歪理邪说一堆的人遇到问题了有没有去看书 或者您看过多少书 
    再或者书上没有提及这种问题 那是世界上还有个google 那么论坛里也有搜索  也有高人曾经记录下来的好东西 不知道您在提问前查阅了多少如果没有
    我觉得您这种人乘早滚出csdn,csdn的风气就是被你这种不学无术的傻蛋搞坏的.
      

  52.   

    任何东西 平民化以后就会变的一般 
    这就是为什么CSDN上的高手越来越少了
    天天看到这种SB帖子 烦都烦死了
      

  53.   

    to insiku(tmd 越学越弱 不懂的太多了)
    照您的理论,这个论坛就不用开了,都可以看书获得,如果来这里提问,就是不学无术,不学习
    您是那么的好学,那么勤奋,于是到这里来教训人了
    到这里来提问的人,不是来受你调侃和屈辱的
    你说什么,“滚”,没有教养!!!!!!
    我看你缺教养,你才歪理邪说一堆!!!!
    你就那么有学有术?
    我告诉你,请你自重!!!!!
    我不会再来这各java论坛,我自己在oracle论坛回答问题,从未这样对待过提问的人
    要说这里的风气,您才是败坏这里学习氛围的人!!
    自以为是的家伙!!!
      

  54.   

    微软故意不在系统中放jvm, 所以才没法运行. 现在的java开源了, linux的发行版本都可以带jvm了.
    微软的错,而不是java的错
      

  55.   

    TO insiku(tmd 越学越弱 不懂的太多了)我对你的这种侮辱人的行径非常气愤!
    你不觉得在这里骂人,就是在骂你自己吗?有不少回答问题的人,总是用教训的口吻教训提问的人
    别人来这里提问,并不是不好学,
    当你接触一个新的只知识点的时候,会遇到很多问题,看书,到论坛问都是方法
    如果你不愿意回答,也没有人勉强你,你有什么资格来教训我,侮辱我?
      

  56.   

    经调查表明:insiku太2了。
               偶尔激动一下,这是年轻人的正常表现。
               但千万不要因为你会一点东西,别人不会,你就牛得不行以至于要用侮辱性词语           
      

  57.   

    无语………………………………
    这个问题说了好多遍,坛子上都起霉了。唉 可怜的CSDN 啊
      

  58.   

    如题,这个时候大家怎么不讨论一下JVM的跨平台性~
    生活就像被XX,真的感觉我们都被骗了~与其这里费劲的JVM,还是什么Java -> Exe,为什么不制定一个可执行程序的标准,就好比IP?为啥?
    盖茨明白技术标准化潜在的超巨大利益,所以~
    他们争啊争啊,谁也不让谁,所以,我们写的Exe不能跨平台,你们写的Class也自己逗自己玩的跨着"平台",有瘾啊?跨了半天我们还是在Windows,你们还是在JVM~
    诶,生活就像被XX,真的感觉我们都被骗了~
      

  59.   

    囧~   这灌水灌的,鄙视来鄙视去…… 
    看了老半天总算有点收获。
    翻译成汇编…… 放弃~  还是把jvm打包算了~ 弄个.bat凑合凑合~