日期:2014-05-20  浏览次数:20926 次

怎么直接双击运行用Java写好的程序??


我用Java写完程序后生成了一个.jar包文件,但是我双击它并不能运行,请问有什么办法不用编译直接双击就可以运行该项目呢?,目前我的项目是java Swing窗体程序,开发工具是Netbeans 6.8!
 
就是写完了Java程序,生成一个类似于.exe和J2me中jar包那样的文件,目的是不用再去程序环境中编译运行,而是双击该项目生成的.jar文件直接运行自己写好的Java程序。哪位高手能告诉我怎么做?最好写得详细点。 
不要用Eclipse啊~~各位高手们帮帮忙,谢谢了!

------解决方案--------------------
我的异常网推荐解决方案:java环境变量设置,http://www.myexception.cn/java-other/172921.html
------解决方案--------------------
1.首先双击运行JAR有报错吗?
有报错的话,是不是主类找不到,确定一下自己的程序存在main函数,确定配置了JAVA环境变量,确定注册表JARFILE/shell/open/command路径正确
2.给你个jar转exe介绍的链接
http://landmine.javaeye.com/blog/459866
------解决方案--------------------
打JAR包可以直接运行





jar 命令详解 
jar 是随 JDK 安装的,在 JDK 安装目录下的 bin 目录中,Windows 下文件名为 jar.exe,Linux 下文件名为 jar。它的运行需要用到 JDK 安装目录下 lib 目录中的 tools.jar 文件。不过我们除了安装 JDK 什么也不需要做,因为 SUN 已经帮我们做好了。我们甚至不需要将 tools.jar 放到 CLASSPATH 中。 
使用不带任何的 jar 命令我们可以看到 jar 命令的用法如下: 
jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名 ... 
其中 {ctxu} 是 jar 命令的子命令,每次 jar 命令只能包含 ctxu 中的一个,它们分别表示: 
 -c 创建新的 JAR 文件包 
 -t 列出 JAR 文件包的内容列表 
 -x 展开 JAR 文件包的指定文件或者所有文件 
 -u 更新已存在的 JAR 文件包 (添加文件到 JAR 文件包中) 
 [vfm0M] 中的选项可以任选,也可以不选,它们是 jar 命令的选项参数 
 -v 生成详细报告并打印到标准输出 
 -f 指定 JAR 文件名,通常这个参数是必须的 
 -m 指定需要包含的 MANIFEST 清单文件 
 -0 只存储,不压缩,这样产生的 JAR 文件包会比不用该参数产生的体积大,但速度更快 
 -M 不产生所有项的清单(MANIFEST〕文件,此参数会忽略 -m 参数 
 [jar-文件] 即需要生成、查看、更新或者解开的 JAR 文件包,它是 -f 参数的附属参数 
 [manifest-文件] 即 MANIFEST 清单文件,它是 -m 参数的附属参数 
 [-C 目录] 表示转到指定目录下去执行这个 jar 命令的操作。它相当于先使用 cd 命令转该目录下再执行不带 -C 参数的 jar 命令,它只能在创建和更新 JAR 文件包的时候可用。 
文件名 ... 指定一个文件/目录列表,这些文件/目录就是要添加到 JAR 文件包中的文件/目录。如果指定了目录,那么 jar 命令打包的时候会自动把该目录中的所有文件和子目录打入包中。 
下面举一些例子来说明 jar 命令的用法: 
1) jar cf test.jar test 
该命令没有执行过程的显示,执行结果是在当前目录生成了 test.jar 文件。如果当前目录已经存在 test.jar,那么该文件将被覆盖。 
2) jar cvf test.jar test 
该命令与上例中的结果相同,但是由于 v 参数的作用,显示出了打包过程,如下: 
标明清单(manifest) 
增加:test/(读入= 0) (写出= 0)(存储了 0%) 
增加:test/Test.class(读入= 7) (写出= 6)(压缩了 14%) 
3) jar cvfM test.jar test 
该命令与 2) 结果类似,但在生成的 test.jar 中没有包含 META-INF/MANIFEST 文件,打包过程的信息也略有差别: 
增加:test/(读入= 0) (写出= 0)(存储了 0%) 
增加:test/Test.class(读入= 7) (写出= 6)(压缩了 14%) 
4) jar cvfm test.jar manifest.mf test 
运行结果与 2) 相似,显示信息也相同,只是生成 JAR 包中的 META-INF/MANIFEST 内容不同,是包含了 manifest.mf 的内容 
5) jar tf test.jar 
在 test.jar 已经存在的情况下,可以查看 test.jar 中的内容,如对于 2) 和 3) 生成的 test.jar 分别应该此命令,结果如下; 
对于 2) 
META-INF/ 
META-INF/MANIFEST.MF 
test/ 
test/Test.class 
对于 3) 
test/ 
test/Test.class 
6) jar tvf test.jar 
除显示 5) 中显示的内容外,还包括包内文件的详细信息,如: 
0 Wed Jun 19 15:39:06 GMT 2002 META-INF/ 
86 Wed Jun 19 15:39:06 GMT 2002 META-INF/MANIFEST.MF 
0 Wed Jun 19 15:33:04 GMT 2002 test/ 
7 Wed Jun 19 15:33:04 GMT 2002 test/Test.class 
7) jar xf test.jar 
解开 test.jar 到当前目录,不显示任何信息,对于 2) 生成的 test.jar,解开后的目录结构如下: 
== 
|-- META-INF 
| `-- MANIFEST 
`-- test 
`--Test.class 
jar xvf test.jar 
运行结果与 7) 相同,对于解压过程有详细信息显示,如: 
创建:META-INF/ 
展开:META-INF/MANIFEST.MF 
创建:test/ 
展开:test/Test.class 
9) jar uf test.jar manifest.mf 
在 test.jar 中添加了文件 manifest.mf,此使用 jar tf 来查看 test.jar 可以发现 test.jar 中比原来多了一个 manifest。这里顺便提一下,如果使用 -m 参数并指定 manifest.mf 文件,那么 manifest.mf 是作为清单文件 MANIFEST 来使用的,它的内容会被添加到 MANIFEST 中;但是,如果作为一般文件添加到 JAR 文件包中,它跟一般文件无异。 
10) jar uvf test.jar manifest.mf 
与 9) 结果相同,同时有详细信息显示,如: 
增加:manifest.mf(读入= 17) (写出= 19)(压缩了 -11%) 
4. 关于 JAR 文件包的一些技巧