主题:  求助:怎么将JAVA程序打包并发布??

风花雪夜

职务:普通成员
等级:1
金币:0.0
发贴:53
注册:2004/3/16 8:50:10
#12005/8/30 15:01:52
怎么将java程序生成. exe文件??

在线等候,请指教!!!



lypyro

职务:普通成员
等级:1
金币:0.0
发贴:13
注册:2005/5/16 10:37:01
#22005/8/30 16:27:48
那是不可能的.只能生成类似于exe的.jar文件.这就是java最大的硬伤之一.



绿茶

职务:普通成员
等级:8
金币:10.0
发贴:19267
注册:2000/12/28 12:10:01
#32005/8/30 16:35:31
我一个朋友写的:

引子:JAVA是一个从思想上就跟我们平常所使用的.EXE程序不一样的语言,对于很对初学者而言,编写并便译好正确的类并不成问题,但是对于如何将自己的编写好的CLASS安装到用户机器上并使之正确运行却成了一个难题,据本人的观察,很多JAVA书也并没有涉及到类似方面的内容。
这里只是简单介绍下将自己开发的CLASS装到运行环境上的经验,欢迎各位高手一起共同讨论。

由于JAVA本身机制和特点,并不适合于用来做需要很友好的用户界面的客户端程序,最适合于用来做不需要界面的控制台服务程序。通常的,程序员如何将在开发环境上的CLASS移植到运行环境并使之正常运行呢。

可以分为以下几个步骤:
1、运行环境上建立JAVA运行环境,也就是安装JDK,要注意的是运行环境上的JDK的版本应该包含在开发过程中所使用到的特性的CLASS。比如说JDK1.3.1并不包含连接池相应的CLASS,如果开发时用到连接池的话,至少应该用JDK1.4以上版本。就目前而言,运行环境上使用JDK1.4.1版本的话基本上能够满足所有开发的CLASS所需要的类。
附: JDK下载地址 java.sun.com/j2se/1.4.1/download.html

2.将自己开发的CLASS或JAR拷贝至运行环境相应的目录,需要注意的是目录的名字最好都是英文的。

3、最关键的一步。
通常情况下,自己编写的程序其目录结构最终应该如下:
1、/bin: 保存程序启动的批处理程序(*.bat)
2、/config: 保存配置文件。
3、/log: 保存日志信息
4、/classes: 保存编译好的CLASS
5、/src: 保存源程序
6、/lib: 相关必须的类库

编写批处理文件,保存至/bin目录中。在批处理文件中将环境变量设置好,并且用JAVA命令启动JAVA程序。
a.设置JAVA主目录,假设JDK安装目录是:D:\j2sdk1.4.0

set JAVA_HOME=D:\j2sdk1.4.0
将JDK的安装目录保存至JAVA_HOME变量中

b.设置用户自己编写的程序存放的主目录

set SERVER_HOME=E:\project1
将程序的存放目录保存至SERVER_HOME变量中

c.设置classpath,将程序的CLASS存放目录添加至classpath中;

set CLASSPATH=%SERVER_HOME%\classes;
如果程序使用到的非JDK包含的类或包,需添加至classpath中(如果没有则不用), 假如说用到ORACLE的JDBC,则可将ORACLE的JDBC包copy至%SERVER_HOME%\lib目录下,并如上面添加至classpath中,则上面应该变为:
set CLASSPATH=%SERVER_HOME%\classes;%SERVER_HOME%\lib\classes12.zip;

d.使用java命令运行程序假设我我们自己编写的程序的主类为MyMain.class, 则应该添加如下:
%JAVA_HOME%\bin\ java MyMain
由于上面设置了JAVA_HOME=D:\j2sdk1.4.0,批处理程序会自动到D:\j2sdk1.4.0\bin目录下寻找java命令,启动JAVA虚拟机并运行MyMain.class.而虚拟机到哪找MyMain.class呢? set CLASSPATH=%SERVER_HOME%\classes;这句告诉虚拟机应该到%SERVER_HOME%\classes下去找MyMain.class,而SERVER_HOME=E:\project1所以就应该是到:E:\project1\classes下找到MyMain.class并解释执行。

附:本例的start.bat内容
@echo off
set JAVA_HOME=D:\j2sdk1.4.0
set SERVER_HOME=E:\project1
set CLASSPATH=%SERVER_HOME%\classes;%SERVER_HOME%\lib\classes12.zip;
@echo on
%JAVA_HOME%\bin\ java MyMain

本例的目录结构和文件:
D:\j2sdk1.4.0

E:\project1\bin\start.bat // 启动程序的批处理文件
E:\project1\config\ // 存放配置文件的目录,比如数据库连接,网络配置等。
E:\project1\log\ // 日志文件存放位置
E:\project1\classes\MyMain.class
\other.class // 自己编的JAVA CLASS(*.class)存放位置
E:\project1\src\ // 自己编写的JAVA CLASS的源文件(*.java)
E:\project1\lib\classes12.zip // 程序使用到的非JDK包含的类或包存放于此

这样,通过批处理进行设置,可以让操作系统方便的找到JDK的JAVA命令,并且让JAVA命令方便的找到要运行的CLASS