2013-08-22 64 views
0

我已经创建了一个应用程序(使用Java),并使其受密码保护:当我在Eclipse中运行/编译我的代码时,它工作正常,但是当我创建一个jar文件并运行该jar时,它不工作:它向我显示当我创建了一个正常工作的第一罐子,但是当我刚刚加密码重置功能,它只是停止工作罐子不工作?

起初:

答案之前,请记住,代码工作正常后,初步框架,但没有任何作品编译器(即Eclipse),但在转换为jar时不工作。

转换过程:File>Export>Runnable Jar(选项进行选择 - package required libraries into jar

输出在Eclipse工程 - 截屏图像here http://i.stack.imgur.com/eVigb.jpg

一个无法运作的(从罐子执行) 截屏图像here http://i.stack.imgur.com/9oDOA.jpg

相关代码片段(考虑每个声明和初始化的东西)

public JFrame psFrame=new JFrame("Password Check"); 
    private JPasswordField psField; 
     private static int tries=5; 
    static boolean condition=false; 
    private String Check,password; 


     //////////// CONSTRUCTOR /////////// 
public MenusAndButtons(){ 
    super("Explorer"); 
    extraString=null; 
    try {passwordSetter();}catch (FileNotFoundException e){e.printStackTrace();} 
    paswardCheck(); 

} 


public synchronized void paswardCheck(){ 


Check=null; 
psFrame.setSize(400, 120); 
psFrame.setLocation(480, 300); 

psField=new JPasswordField("",30); 
psField.addActionListener(new ActionListener(){ 

    @Override 
    public void actionPerformed(ActionEvent e) { 

     if(e.getSource()==psField){ 
      Check=e.getActionCommand(); 

    if(tries!=1){ 


       if(Check!=null){ 


          if(password.equals(Check)){ 
          JOptionPane.showMessageDialog(null, "Welcome to Explorer ", "Welcome", JOptionPane.INFORMATION_MESSAGE); 
          condition=true; 
          psFrame.dispose(); 
          Mnb();} 
          else{tries--; 
          JOptionPane.showMessageDialog(null,"You Entered a Wrong Password.\nYou are Left With " +tries+ " more Tries.\nPlease complete The Password Check with Correct Password\n", "Warrnning ",JOptionPane.WARNING_MESSAGE); 
          psField.setText(null); } 


       }else{JOptionPane.showMessageDialog(null,"You Entered Nothing in Password Field.\nPlease Enter a Password.","Null value Password Check",JOptionPane.ERROR_MESSAGE); 
       psField.setText(null);} 


    }else{JOptionPane.showMessageDialog(null,"You Entered a Wrong Password 5 Times.\nExplorer is Quiting Now.","Password Check Failed ",JOptionPane.ERROR_MESSAGE); 
    psFrame.dispose(); 
    System.exit(0);} 


    } 

    }}); 
psFrame.setLayout(new FlowLayout()); 
psFrame.add(new JLabel("Enter Password")); 
psFrame.add(psField); 
psFrame.setResizable(false); 
psFrame.setVisible(true); 


} 




public void passwordSetter() throws FileNotFoundException{ 

    Scanner sc=new Scanner(new File("PasswordContainer.txt")); 
    while(sc.hasNext()) 
     password=sc.nextLine(); 
    sc.close(); 

} 

public void passwordresetter() throws Exception{ 


    String old=JOptionPane.showInputDialog(null,"Please Enter current Password","Current Password Check",JOptionPane.CANCEL_OPTION); 
    if(old.equals(password)){ 
    String usererntry=JOptionPane.showInputDialog(null, "Please Enter new Password","Reset Password",JOptionPane.CANCEL_OPTION); 

    if(usererntry.length()>=6){ 
    Formatter fp=new Formatter("PasswordContainer.txt"); 
    fp.format("%s",usererntry); 
    fp.close(); 
    JOptionPane.showMessageDialog(null,"You've successfully Change Your Password","Password Change Conformation",JOptionPane.PLAIN_MESSAGE); 
}else{ 
    JOptionPane.showMessageDialog(null,"You Password Must Contain at least 6 Characters\nPlease Retype the New Password "); 
    passwordresetter();} 
     } 


    else{JOptionPane.showMessageDialog(null,"You Entered Wrong Password\nPlease Retype the Current Password "); 
    passwordresetter(); 
    }  
} 
+0

无法看到您的代码或至少错误消息来回答。尝试从命令行使用java.exe -jar –

+0

启动JAR没有显示错误它的行为与未在actionListener(实际上是actionPerformed方法)中写入一样。我会用代码编辑我的问题 –

回答

0

从你的描述来看,这听起来像你的jar没有按照你的想法组装。

如果面板没有显示出来,那么你可能会缺少支持库。

我会用jar文件打开并浏览内容。无论如何,当你学习Java时,它是一个有趣的练习(我注意到你是你的个人档案中的学生)。浏览jar并确保它包含应该支持您的应用程序的所有内容。我的猜测是,你使用的任何框架都没有完全复制到你的jar中。