0

(Java で) アプリケーションを作成し、パスワードで保護しました: Eclipse でコードを実行/コンパイルすると正常に動作しますが、jar ファイルを作成してその jar を実行すると動作しませんでした: 初期フレームが表示されますしかし、その後は何も機能しません:

最初に最初の jar を作成したときは正常に動作しましたが、パスワード リセット機能を追加しただけで動作しなくなりました。

回答する前に、コードはコンパイラ (つまり Eclipse) では正常に動作しますが、jar に変換すると動作しないことに注意してください。

変換手順: File>Export>Runnable Jar(選択したオプション - package required libraries into jar)

Eclipse で動作する出力 - スクリーンショット画像はこちら http://i.stack.imgur.com/eVigb.jpg

機能していないもの (jar から実行) のスクリーン ショット画像はこちら 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();
  }    
}
4

1 に答える 1

0

あなたの説明から、あなたのジャーはあなたが思っているように組み立てられていないようです.

パネルが表示されない場合は、サポートしているライブラリが不足している可能性があります。

jar ファイルを開いて内容を確認します。いずれにせよ、Java を学んでいるときは楽しい練習になります (プロフィールから学生であることに気付きました)。jar を調べて、アプリをサポートするために必要なものがすべて含まれていることを確認します。私の推測では、使用しているフレームワークが jar に完全にコピーされていない可能性があります。

于 2013-08-24T13:12:27.843 に答える