我写了个窗口程序,压成jar后双击没有反应,一定要放在jdk\bin\ 目录下输入DOS命令java -jar cms.jar 后才能运行?请问高手这是为什么?
怎样才能写成一个双击就能运行的文件?我就算写了一个.bat文件,也必须得把.bat和cms.jar放在jdk\bin\ 目录下才双击能运行!!!!
请问高手们怎么解决这个问题啊?
怎样才能写成一个双击就能运行的文件?我就算写了一个.bat文件,也必须得把.bat和cms.jar放在jdk\bin\ 目录下才双击能运行!!!!
请问高手们怎么解决这个问题啊?
set MEM_ARGS=-Xms512m -Xmx512m -XX:MaxPermSize=512m
set JAVA_HOME=你的jdk的位置
set classpath=.;%classpath%;%JAVA_HOME%\lib\dt.jar%JAVA_HOME%\bin\java -Duser.timezone=GMT+8 %MEM_ARGS% 你的主类pause[/code]
可以把普通的 Java 程序做成真正的 exe, 也就是单一个 exe 就可以在没有安装 JVM 的机器上运行。这样的工具常见的有 JET 和 gcj. 前者是收费的,而且做出来的 exe 还是需要一堆 dll 。推荐使用 gcj. 他有 windows 和 Linux 版,直接下载 zip 包,不需要安装,里面有不少例子,一些 build 的批处理文件。从原理来说 gcj 自己实现了 JVM 规范,也就是你编写一个 HelloWorld.java, 其中的 main 方法为 System.out.println("foo");
当使用 gcj 把它做成 exe( 大约 2M ) ,运行这个 exe 时,会启动里面的一个小型 jvm, 在这上面跑 HelloWorld 。
用户可以选择使用他机器上的 JRE 或是这个安装包内的 JRE 来运行程序
这是很常见的一种做法,如 JBuilder 就是这么做的。
这样的好处是不要求对方机器上装有 JRE ,而且你原来的程序不需要任何改动。
InstallAnywhere 中一个压缩的 JRE 大概是 8M 。 制作成可执行的 jar, 也就是在 META-INF 的 MANIFEST 文件制定 Main-Class
可以通过命令行 java -jar jarfile.jar 来执行, windows 默认的把 *.jar 使用 javaw -jar 打开,所以有些机器上可以直接双击 jar 运行。 制作伪 exe, 其实和上一种做法是一样的,只不过做成 exe, 调用系统的 java.exe 来运行它,这样的工具有 nativeJ,exe4j 等 其实 Java 不像 VB,Delphi 只是一个语言,而是一个平台。
jar 是最常用的部署单元,做成 exe 没什么意思。
一、 exe4j 。
说明: exe4j 可以将 Jar 文件制作成 exe 文件,但需 jre 支持,也可将 Jar 文件放在外面。
软件性质:共享软件
下载地址: http://www.ej-technologies.com/products/exe4j/overview.html
二、 JBuilder 。
说明:新版本的 JBuilder 可以直接把工程制作成各系统的可执行文件,包括 Windows 系统。
软件性质:商业软件
下载地址:略。我是从 eMule 下载的。
三、 NativeJ 。
说明:与 exe4j 功能类似。
软件性质:共享软件
下载地址: http://www.dobysoft.com/products/nativej/download.html
四、 Excelsior JET 。
说明:可以直接将 Java 类文件制作成 exe 文件,除 AWT 和 Swing 及第三方图形接口外可不需 jre 支持( Java5.0 不行)。
软件性质:共享软件
下载地址: http://excelsior-usa.com/home.html
五、 jshrink 。
说明:可将 Jar 文件打包进 exe 文件。同时具有混淆功能(这才是它的主要功能)。
软件性质:共享软件
下载地址: http://www.e-t.com/jshrink.html
六、 InstallAnywhere 。
说明:打包工具,对 Java 打包最好用。可打包成各操作系统运行包。包括 Windows 系统。
软件性质:商业软件。
下载地址: http://www.zerog.com/
七、 InstallShieldX 。
说明:与 InstallAnywhere 类似,但比 InstallAnywhere 功能强大。相对的,比较复杂,不易上手,我现在还没学会。
叫用户装jre,装好jre,双击jar就可以运行,机器上有jre,jsmooth会自己找的,找不到会提示,并连接到sun的网站
右键jar -》打开放式里面选 javaw
echo "start"
set MEM_ARGS=-Xms512m -Xmx512m -XX:MaxPermSize=512m
set JAVA_HOME=你的jdk的位置
set classpath=.;%classpath%;%JAVA_HOME%\lib\dt.jar;cms.jar;
%JAVA_HOME%\bin\java -Duser.timezone=GMT+8 %MEM_ARGS% 你的主类
pause
如果引用到别的jar包,那么可以下载一个eclipse插件fatjar,就可以将别的jar包打到一起了,然后用exe4j生成exe文件,可以选择带jre的或者不带jre的,
具体使用方法网上搜索有很多~
或者你直接用eclipse之类工具打包
path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%QUARTUS_ROOTDIR%\bin;
%QUARTUS_ROOTDIR%\win;%QESS_ROOTDIR%\bin;
D:\Program Files\Java\jdk1.5.0_14\bin;D:\ProgramFiles\Java\jre1.5.0_14\bin;
上边是我的环境变量的设定,没错吧?
然后JAR文件也已经跟JRE关联了,显示的是JAVA的图标,但是双击没作用。
我用NETBEANS打包了以后双击运行也没作用。
但是在DOS下输入命令 java -jar cms.jar 能运行没问题。
该怎么解决呢?
我并不需要弄成EXE文件,我只想知道JAVA软件都是怎么发布给用户的。