java 双击jar包闪退或没反应,使用cmd运行提示没有主清单属性

u010413585 2015-03-16 10:54:42
使用cmd把类打包成课双击执行的jar包,双击后没反应,然后我去修改注册表
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" %*
之后在双击jar包,弹出cmd界面一瞬间消失,本来应该出现图形界面,cmd界面直接运行jar包提示没有主清单属性

然后百度解决方法看到了
在工具-->文件夹-->文件类型,找到jar类型,把原来的打开方式删除。然后...
1、打开“我的电脑”,选择“工具”菜单下的“文件夹选项(0)...”。
2、在“文件夹选项”对话框中选择“文件类型”选项卡。
3、点击“新建”按钮,输入文件扩展名“jar”。
4、点击“确定”按钮后,可以看到已注册的文件类型中新增了JAR文件类型。
5、点击“高级”按钮,出现“编辑文件类型”窗口。
6、点击“新建(N)...”按钮,出现“新操作”窗口。将操作命名为“open”,执行操作的应用程序 为“D:\Java\jdk1.6.0_12\jre\bin\javaw.exe -jar %1”。
注:D:\Java\jdk1.6.0_12 为JDK所在目录,根据个人电脑上实际环境设置。
7、点击“确定”按钮,回到“编辑文件类型”窗口。在操作列表框中有了“open”一项操作。
8、点击“确定”按钮回到“文件夹选项”窗口, 这时JAR扩展名的详细信息有了变化。
9、点击“关闭”按钮。这时来双击一个可运行的Jar文件(FileDigest.jar)
这里说要在文件夹选项---文件类型---高级选项里修改,但是win7的高级选项去哪了,终于发现XP的好处了
本来简简单单编个小程序,结果搞来搞去运行不了,附上代码

package mymenu;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class MyMenuTest
{
private Frame f;
private MenuBar bar;
private TextArea ta;
private Menu fileMenu;
private MenuItem openItem,saveItem,closeItem;
private FileDialog openDia,saveDia;
private File file;

MyMenuTest()
{
init();
}
public void init()
{
f = new Frame("my window");
f.setBounds(300,100,650,600);
//f.setLayout(new FlowLayout());

bar = new MenuBar();

ta = new TextArea();

fileMenu= new Menu("文件");

openItem = new MenuItem("打开");
saveItem = new MenuItem("保存");
closeItem = new MenuItem("退出");

fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(closeItem);
bar.add(fileMenu);

f.setMenuBar(bar);

openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);
saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);

f.add(ta);
myEvent();

f.setVisible(true);
}
private void myEvent()
{
saveItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(file==null)
{
saveDia.setVisible(true);

String dirPath=saveDia.getDirectory();
String fileName=saveDia.getFile();
if(dirPath==null || fileName==null)
return;
file = new File(dirPath,fileName);
}
try
{
BufferedWriter bufw = new BufferedWriter(new FileWriter(file));

String text = ta.getText();

bufw.write(text);
//bufw.flush();
bufw.close();
}
catch (IOException ex)
{
throw new RuntimeException();
}
}
});
openItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
openDia.setVisible(true);
String dirPath = openDia.getDirectory();
String fileName = openDia.getFile();
//System.out.println(dirPath+"..."+fileName);
if(dirPath==null || fileName==null)
return;
ta.setText("");
file = new File(dirPath,fileName);
try
{
BufferedReader bufr = new BufferedReader(new FileReader(file));
String line = null;
while((line=bufr.readLine())!=null)
{
ta.append(line+"\r\n");
}

bufr.close();
}
catch (IOException ex)
{
throw new RuntimeException("读取失败");
}
}
});
closeItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args)
{
new MyMenuTest();
}
}
...全文
2031 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sq1303037035 2016-07-21
  • 打赏
  • 举报
回复
出现了同样的问题,我的jar包不是从eclipse中导出的,是一个应用程序,在别人电脑上直接双击就可以打开
铁匠梁老师 2015-04-11
  • 打赏
  • 举报
回复
2楼正解,直接使用eclipse导执行出可执行jar文件
bbjiabcd 2015-04-10
  • 打赏
  • 举报
回复
Win7得改注册表
姜小白- 2015-03-16
  • 打赏
  • 举报
回复
缺少 MANIFEST.MF 文件,在jar包里面的META-INF 目录下面 在 MANIFEST.MF 文件中指定执行时的main方法所在的类 参考 eclipse 导出jar包注意事项
u010413585 2015-03-16
  • 打赏
  • 举报
回复
图片居然挂了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧