黑马程序员技术交流社区

标题: jar包双击执行的问题???? [打印本页]

作者: 彭波    时间: 2013-4-2 15:29
标题: jar包双击执行的问题????
本帖最后由 彭波 于 2013-4-3 16:57 编辑
  1. /*
  2. 重点不是代码问题,是在win7产生jar包双击怎么没有办法执行
  3. */
  4. package mymenu;
  5. import java.awt.*;
  6. import java.awt.event.*;
  7. import java.io.*;
  8. public class MyMenuTest
  9. {
  10.         private Frame f;
  11.         private TextArea ta;
  12.         private MenuBar bar;
  13.         private Menu fileMenu;
  14.         private MenuItem openItem, saveItem, closeItem, subItem;
  15.         
  16.         private FileDialog openDia, saveDia;
  17.         private File file;
  18.         MyMenuTest()
  19.         {
  20.                 init();
  21.         }
  22.         
  23.         public void init()
  24.         {
  25.                 f = new Frame("my window");
  26.                 f.setBounds(300, 100, 600, 500);
  27.                 //f.setLayout(new FlowLayout());        
  28.                
  29.                 bar = new MenuBar();
  30.                 ta = new TextArea();
  31.                
  32.                 fileMenu = new Menu("文件");
  33.                
  34.                 openItem = new MenuItem("打开");
  35.                 saveItem = new MenuItem("保存");
  36.                 closeItem = new MenuItem("退出");
  37.                
  38.                 fileMenu.add(openItem);
  39.                 fileMenu.add(saveItem);
  40.                 fileMenu.add(closeItem);
  41.                 bar.add(fileMenu);
  42.                
  43.                 f.setMenuBar(bar);
  44.                
  45.                 openDia = new FileDialog(f, "我要打开", FileDialog.LOAD);
  46.                 saveDia = new FileDialog(f, "我要保存", FileDialog.SAVE);
  47.                
  48.                 f.add(ta);
  49.                
  50.                 myEvent();
  51.                
  52.                 f.setVisible(true);
  53.         }
  54.         private void myEvent()
  55.         {
  56.                 saveItem.addActionListener(new ActionListener()
  57.                 {
  58.                         public void actionPerformed(ActionEvent e)
  59.                         {
  60.                                 if(file==null)
  61.                                 {
  62.                                         saveDia.setVisible(true);
  63.                                        
  64.                                         String dirPath = saveDia.getDirectory();
  65.                                         String fileName = saveDia.getFile();        
  66.                                         if(dirPath==null || fileName==null)
  67.                                                 return;
  68.                                         file = new File(dirPath, fileName);
  69.                                 }
  70.                                 
  71.                                 try
  72.                                 {
  73.                                         BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
  74.                                        
  75.                                         String text = ta.getText();
  76.                                        
  77.                                         bufw.write(text);        
  78.                                         //bufw.flush();
  79.                                         bufw.close();
  80.                                 }
  81.                                 catch(IOException ex)
  82.                                 {
  83.                                         throw new RuntimeException();        
  84.                                 }
  85.                         }        
  86.                 });
  87.                
  88.                 openItem.addActionListener(new ActionListener()
  89.                 {
  90.                         public void actionPerformed(ActionEvent e)
  91.                         {
  92.                                 openDia.setVisible(true);
  93.                                 String dirPath = openDia.getDirectory();
  94.                                 String fileName = openDia.getFile();
  95.                                 //System.out.println(dirPath+"..."+fileName);
  96.                                 
  97.                                 if(dirPath==null || fileName==null)
  98.                                         return;
  99.                                        
  100.                                 ta.setText("");
  101.                                 file = new File(dirPath, fileName);
  102.                                 
  103.                                 try
  104.                                 {
  105.                                         BufferedReader bufr = new BufferedReader(new FileReader(file));
  106.                                         String line = null;
  107.                                        
  108.                                         while((line=bufr.readLine()) != null)
  109.                                         {
  110.                                                 ta.append(line+"\r\n");
  111.                                         }
  112.                                         bufr.close();
  113.                                 }
  114.                                 catch(IOException ex)
  115.                                 {
  116.                                         throw new RuntimeException("读取失败");
  117.                                 }
  118.                                 
  119.                                        
  120.                         }        
  121.                 });
  122.                
  123.                
  124.                 closeItem.addActionListener(new ActionListener()
  125.                 {
  126.                         public void actionPerformed(ActionEvent e)
  127.                         {
  128.                                 System.exit(0);        
  129.                         }        
  130.                 });
  131.                
  132.                 f.addWindowListener(new WindowAdapter()
  133.                 {
  134.                         public void windowClosing(WindowEvent e)
  135.                         {
  136.                                 System.exit(0);        
  137.                         }        
  138.                 });        
  139.         }
  140.         
  141.         public static void main(String[] args)
  142.         {
  143.                 new MyMenuTest();
  144.         }
  145. }
复制代码
代码如上,第22天-14的内容,重点不是代码问题,是在win7产生jar包双击怎么没有办法执行
我的操作(和老师一样啊):(1) ----->把类文件放在在c盘myclass文件中
               
                                          (2)在myclass文件夹中创建一个文件1.txt,写入:Main-Class: mymenu.MyMenuTest  结尾要回车
               
                                        (3) ------->产生了 ,可是这个文件双击执行不了啊?????????

还有一个问题是:毕老师在说过这个问题后又讲了个问题:工具----->文件夹选项 ----->文件类型----->(后面各种操作  是在winXP下演示),我是在win7中,试问,咋么
做这些操作啊,win7下没有这些选项啊???????  
作者: 彭波    时间: 2013-4-2 21:02
这个地方截图能错了,不是这个问题,最后不是生成了一个my.jar的压缩文件了吗?我双击不是像老师那样
打开的是一个应用程序,而是其解压这个文件,
作者: 赵晓东    时间: 2013-4-2 21:48
也许是你JDK安装的问题吧,从新装一下JDK,从新设置一下Path,我的也是win7的,就没出现这种状况
作者: 赵晓东    时间: 2013-4-2 21:54
我的也是win7

QQ截图20130402214303.png (44.91 KB, 下载次数: 16)

QQ截图20130402214303.png

作者: 赵晓东    时间: 2013-4-2 22:08
看看你的文件关联有.jar吗?

QQ截图20130402220218.png (79.69 KB, 下载次数: 17)

QQ截图20130402220218.png

作者: 刘林虎    时间: 2013-4-2 23:03
我感觉你应该重新配置一下path路径
作者: 李尧    时间: 2013-4-3 09:24
卤煮,我也是win7,我当时遇到跟你一样的情况.我是这么解决滴.
编辑注册表:HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command,修改数据数值为"D:\Program Files\Java\jdk1.6.0_21\jre\bin\javaw.exe" -jar "%1"(只要在原来的数值下添加-jar即可,路径就是你自己的javaw.exe的路径)。
你可以试试
作者: 黄玉昆    时间: 2013-4-3 12:38
这个是我总结的:

jar文件必须在系统中注册,才能运行。注册方法如下:

A.对于XP系统:

   a.打开任意对话框,在菜单栏点击工具按钮,选择文件夹选项

   b.选择新建--->扩展名,将扩展名设置为jar,确定

   c.选择高级,可更改图标,然后点击新建,命名为open,

   d.在用于可执行应用程序中,点浏览,将jdk下的bin的整个文件路径添加进来,并在路径后添加-jar即可。

B.对于win7系统:

   a.改变打开方式:右击.jar文件,点击打开方式,选择默认程序为jdk下bin中的javaw.exe应用程序。

   b.修改关联程序的注册表:打开注册表(win+r),找到注册表路径\HKEY_CLASSES_ROOT\Aplications\javaw.exe\shell\open\command下的字符串值,右击点修改,将值改为:"C:\Program Files\Java\jre6\bin\javaw.exe" -jar "%1"其中-jar前的路径就是javaw.exe的路径。保存

   c.双击即可执行jar程序,如果仍不能执行,则需下载最新版的jdk。

具体请看帖子:
http://bbs.itheima.com/forum.php?mod=viewthread&tid=39457&highlight=jar%E5%8C%85


作者: 黄玉昆    时间: 2013-4-3 12:39
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
作者: 彭波    时间: 2013-4-3 14:09
总结各位大神的答案,我找到了解决方案:安装jdk时,结束时会让安装jre,这个jre一定要安装,虽然jdk中已经包含了jre,但是此物非彼物,不然就会出现我这样的悲剧了,
谢谢各位,那个修改注册表的方法我还是没有搞明白,试问怎么找到注册表,详细点行不????




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2