java程序打包成可运行的jar文件,双击没反应

时间:2021-02-06 09:34:12
我试了用eclipse打包成可执行的jar文件,或者在windows控制台用jar命令来做,
最终生成的jar包里确实有MANIFEST.MF文件,Main-Class: 写的也没问题

现象:
在windows控制台用java -jar xxx.jar 可以运行
但是双击没有反应
我右键jar包,看到关联的程序确实是javaw程序

在网上看大伙的方法,试了都不行

那我就不明白了。

18 个解决方案

#1


你用cmd将你的文件打包成jar文件试一试

#2


右键切换打开方式,使用Java(TM) PlatForm SE binary 打开,希望能够帮助到你

#3


引用 2 楼 wufei151 的回复:
右键切换打开方式,使用Java(TM) PlatForm SE binary 打开,希望能够帮助到你

确实是这样设置的

#4


引用 1 楼 oLinHao007 的回复:
你用cmd将你的文件打包成jar文件试一试


试过好多次了。不行

#5


在CMD里运行:
java jar包名字

看报错

#6


引用 3 楼 hardwin 的回复:
Quote: 引用 2 楼 wufei151 的回复:

右键切换打开方式,使用Java(TM) PlatForm SE binary 打开,希望能够帮助到你

确实是这样设置的

http://jingyan.baidu.com/article/200957617c3619cb0621b44d.html
看看这篇文章

#7


.jar文件默认关联的是javaw,如果你打开的是控制台程序,那是因为控制台程序是不能用javaw打开的,javaw只能打开具有图形界面的Java程序。
如果你想双击打开,可以新建一个记事本文件,并将扩展名改为bat,然后右键-编辑,输入命令 java -jar xxx.jar 保存,双击这个bat文件即可运行xxx.jar。

#8


你试一试:
用命令行编译java并生成可执行的jar包
如果想用java编写一个可视化小程序,碰巧手头没有IDE的话,可以用命令行来完成编译、打包等工作。
拿自己编写的“java记事本”为例,介绍一下这个过程:
1.编写源代码。
编写源文件:NotePad.java并保存,例如:E:\myApp\NotePad.java。程序结构如下:
package test;
import java.awt.*;
import javax.swing.*;
//更多包的导入...
class NotePadFrame extends JFrame {
//主界面的设计...
}
//其他相关代码...
public class NotePad {
public static void main(String[] args) {
new NotePadFrame();
}
}
2.打开终端。
打开系统菜单:“开始”->“运行...”->输入“cmd”,打开终端。
执行如下命令转到源文件所在目录:
e:
cd myApp
3.编译源文件。
输入如下命令进行编译:
javac NotePad.java
执行成功之后,会在当前目录下生成一系列.class文件。
4.新建包文件夹。
输入如下命令新建包文件夹:
mkdir test
也可在资源管理器新建此文件夹。
此文件夹必须与源文件中定义的包名完全一致(package test;)。
5.将类文件放到新的文件夹里。
在资源管理器里将编译生成的所有.class文件移动到新建的test文件夹。
6.测试程序是否可正常运行。
在E:\myApp路径下输入如下命令:
java test.NotePad
如果可以正常运行程序,就可以进行下一步了。否则应检查上述步骤的正确性。
7.生成可执行的jar包。
在E:\myApp路径下输入如下命令:
jar -cef test.NotePad NotePad.jar test
以上命令及参数的含义如下:
jar命令为java自带的专用打包工具;
c代表生成新的jar包;
e代表可执行的类,亦即main方法所在的类。书写时要加上包名,在本例中是后面的test.NotePad;
f代表生成的jar包的名称,在本例中是NotePad.jar。此包名可以随意命名,没有规定;
test最后面的这个参数表示将test目录下的所有文件都打包放到新的jar包中。
8.测试jar包是否可正常运行。
在E:\myApp路径下输入如下命令:
java -jar NotePad.jar
如果可以正常运行程序,则说明jar包制作成功。
如果已经将“Java(TM) Platform SE binary”关联到.jar文件类型(通过正常安装jdk后都会正确关联),还可以通过双击来执行此类jar包,其感受与exe文件相同。

#9


>ftype jarfile
jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

>assoc .jar
.jar=jarfile

#10


引用 9 楼 huntor 的回复:
>ftype jarfile
jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

>assoc .jar
.jar=jarfile


看不懂,啥意思呀?

#11


引用 7 楼 bbjiabcd 的回复:
.jar文件默认关联的是javaw,如果你打开的是控制台程序,那是因为控制台程序是不能用javaw打开的,javaw只能打开具有图形界面的Java程序。
如果你想双击打开,可以新建一个记事本文件,并将扩展名改为bat,然后右键-编辑,输入命令 java -jar xxx.jar 保存,双击这个bat文件即可运行xxx.jar。


如果想双击运行jar文件,不想通过bat文件运行,有办法吗?

#12


设定运行方式的时候,可以设置加参数 -jar 

#13


引用 12 楼 okafor2011 的回复:
设定运行方式的时候,可以设置加参数 -jar 


我去注册表里看了,javaw的command里,确确实实是加上了-jar "%1"
完整的  "C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

java程序打包成可运行的jar文件,双击没反应

#14


把注册表项中你编辑那个值中的"W"去掉,其他不变,就行

#15


Sorry,刚才没看清楚你的注册表路径,应该是改
HKEY_CLASSES_ROOT\jarfile\shell\open\command
中的默认项,把路径中的javaw改成java即可,其他部分不变
例如:"C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
改为:"C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*

#16


修改注册表或者重装jdk

#17


引用 15 楼 bbjiabcd 的回复:
Sorry,刚才没看清楚你的注册表路径,应该是改
HKEY_CLASSES_ROOT\jarfile\shell\open\command
中的默认项,把路径中的javaw改成java即可,其他部分不变
例如:"C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
改为:"C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*


这样做就好了。谢谢亲

#18


引用 7 楼 bbjiabcd 的回复:
.jar文件默认关联的是javaw,如果你打开的是控制台程序,那是因为控制台程序是不能用javaw打开的,javaw只能打开具有图形界面的Java程序。
如果你想双击打开,可以新建一个记事本文件,并将扩展名改为bat,然后右键-编辑,输入命令 java -jar xxx.jar 保存,双击这个bat文件即可运行xxx.jar。
原来如此!

#1


你用cmd将你的文件打包成jar文件试一试

#2


右键切换打开方式,使用Java(TM) PlatForm SE binary 打开,希望能够帮助到你

#3


引用 2 楼 wufei151 的回复:
右键切换打开方式,使用Java(TM) PlatForm SE binary 打开,希望能够帮助到你

确实是这样设置的

#4


引用 1 楼 oLinHao007 的回复:
你用cmd将你的文件打包成jar文件试一试


试过好多次了。不行

#5


在CMD里运行:
java jar包名字

看报错

#6


引用 3 楼 hardwin 的回复:
Quote: 引用 2 楼 wufei151 的回复:

右键切换打开方式,使用Java(TM) PlatForm SE binary 打开,希望能够帮助到你

确实是这样设置的

http://jingyan.baidu.com/article/200957617c3619cb0621b44d.html
看看这篇文章

#7


.jar文件默认关联的是javaw,如果你打开的是控制台程序,那是因为控制台程序是不能用javaw打开的,javaw只能打开具有图形界面的Java程序。
如果你想双击打开,可以新建一个记事本文件,并将扩展名改为bat,然后右键-编辑,输入命令 java -jar xxx.jar 保存,双击这个bat文件即可运行xxx.jar。

#8


你试一试:
用命令行编译java并生成可执行的jar包
如果想用java编写一个可视化小程序,碰巧手头没有IDE的话,可以用命令行来完成编译、打包等工作。
拿自己编写的“java记事本”为例,介绍一下这个过程:
1.编写源代码。
编写源文件:NotePad.java并保存,例如:E:\myApp\NotePad.java。程序结构如下:
package test;
import java.awt.*;
import javax.swing.*;
//更多包的导入...
class NotePadFrame extends JFrame {
//主界面的设计...
}
//其他相关代码...
public class NotePad {
public static void main(String[] args) {
new NotePadFrame();
}
}
2.打开终端。
打开系统菜单:“开始”->“运行...”->输入“cmd”,打开终端。
执行如下命令转到源文件所在目录:
e:
cd myApp
3.编译源文件。
输入如下命令进行编译:
javac NotePad.java
执行成功之后,会在当前目录下生成一系列.class文件。
4.新建包文件夹。
输入如下命令新建包文件夹:
mkdir test
也可在资源管理器新建此文件夹。
此文件夹必须与源文件中定义的包名完全一致(package test;)。
5.将类文件放到新的文件夹里。
在资源管理器里将编译生成的所有.class文件移动到新建的test文件夹。
6.测试程序是否可正常运行。
在E:\myApp路径下输入如下命令:
java test.NotePad
如果可以正常运行程序,就可以进行下一步了。否则应检查上述步骤的正确性。
7.生成可执行的jar包。
在E:\myApp路径下输入如下命令:
jar -cef test.NotePad NotePad.jar test
以上命令及参数的含义如下:
jar命令为java自带的专用打包工具;
c代表生成新的jar包;
e代表可执行的类,亦即main方法所在的类。书写时要加上包名,在本例中是后面的test.NotePad;
f代表生成的jar包的名称,在本例中是NotePad.jar。此包名可以随意命名,没有规定;
test最后面的这个参数表示将test目录下的所有文件都打包放到新的jar包中。
8.测试jar包是否可正常运行。
在E:\myApp路径下输入如下命令:
java -jar NotePad.jar
如果可以正常运行程序,则说明jar包制作成功。
如果已经将“Java(TM) Platform SE binary”关联到.jar文件类型(通过正常安装jdk后都会正确关联),还可以通过双击来执行此类jar包,其感受与exe文件相同。

#9


>ftype jarfile
jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

>assoc .jar
.jar=jarfile

#10


引用 9 楼 huntor 的回复:
>ftype jarfile
jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

>assoc .jar
.jar=jarfile


看不懂,啥意思呀?

#11


引用 7 楼 bbjiabcd 的回复:
.jar文件默认关联的是javaw,如果你打开的是控制台程序,那是因为控制台程序是不能用javaw打开的,javaw只能打开具有图形界面的Java程序。
如果你想双击打开,可以新建一个记事本文件,并将扩展名改为bat,然后右键-编辑,输入命令 java -jar xxx.jar 保存,双击这个bat文件即可运行xxx.jar。


如果想双击运行jar文件,不想通过bat文件运行,有办法吗?

#12


设定运行方式的时候,可以设置加参数 -jar 

#13


引用 12 楼 okafor2011 的回复:
设定运行方式的时候,可以设置加参数 -jar 


我去注册表里看了,javaw的command里,确确实实是加上了-jar "%1"
完整的  "C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

java程序打包成可运行的jar文件,双击没反应

#14


把注册表项中你编辑那个值中的"W"去掉,其他不变,就行

#15


Sorry,刚才没看清楚你的注册表路径,应该是改
HKEY_CLASSES_ROOT\jarfile\shell\open\command
中的默认项,把路径中的javaw改成java即可,其他部分不变
例如:"C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
改为:"C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*

#16


修改注册表或者重装jdk

#17


引用 15 楼 bbjiabcd 的回复:
Sorry,刚才没看清楚你的注册表路径,应该是改
HKEY_CLASSES_ROOT\jarfile\shell\open\command
中的默认项,把路径中的javaw改成java即可,其他部分不变
例如:"C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
改为:"C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*


这样做就好了。谢谢亲

#18


引用 7 楼 bbjiabcd 的回复:
.jar文件默认关联的是javaw,如果你打开的是控制台程序,那是因为控制台程序是不能用javaw打开的,javaw只能打开具有图形界面的Java程序。
如果你想双击打开,可以新建一个记事本文件,并将扩展名改为bat,然后右键-编辑,输入命令 java -jar xxx.jar 保存,双击这个bat文件即可运行xxx.jar。
原来如此!