2016-04-13 17 views
-3

私は、5つのクラス、BankValueGUI、BankValueGUI $ 1、BankValueGUI $ 2 &などを出力するスクリプトをコンパイルしました。私は誤ってソースファイルを削除したので、それを逆コンパイルする必要がありましたが、1つの.javaファイルに逆コンパイルされていません。5に逆コンパイルされています。クラスをメインクラスに配置しようとすると、 、ここでの主なソースです:クラス内のJavaクラス

package scripts.BankChecker; 

import javax.swing.GroupLayout; 
import javax.swing.GroupLayout.SequentialGroup; 
import javax.swing.JFileChooser; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 



public class BankValueGUI extends javax.swing.JFrame 
{ 
    private javax.swing.JButton inputFileButton; 
    private JFileChooser inputFileChooser; 
    private javax.swing.JTextField inputFileField; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JButton startButton; 

    public BankValueGUI() 
    { 

    initComponents(); 

    } 

    private void initComponents() 
    { 


    inputFileChooser = new JFileChooser(); 
    jLabel1 = new javax.swing.JLabel(); 
    inputFileField = new javax.swing.JTextField(); 
    inputFileButton = new javax.swing.JButton(); 
    startButton = new javax.swing.JButton(); 

    inputFileChooser.setAcceptAllFileFilterUsed(false); 
    inputFileChooser.setApproveButtonText("Choose this file"); 
    inputFileChooser.setApproveButtonToolTipText("Make sure there is one account per line, in user:pass format"); 
    inputFileChooser.setCurrentDirectory(new java.io.File(System.getProperty("user.home"))); 

    inputFileChooser.setDialogTitle("Choose the text file containing accounts to check"); 
    inputFileChooser.setFileFilter(new javax.swing.filechooser.FileNameExtensionFilter("TEXT FILES", new String[] { "txt", "text" })); 
    inputFileChooser.addActionListener(new BankValueGUI$1(this)); 





    setDefaultCloseOperation(3); 

    jLabel1.setText("Input File:"); 

    inputFileField.setEditable(false); 
    inputFileField.setText("The file containing accounts to check"); 

    inputFileButton.setText("Browse"); 
    inputFileButton.addActionListener(new BankValueGUI$2(this)); 





    startButton.setText("Start"); 
    startButton.setEnabled(false); 
    startButton.addActionListener(new BankValueGUI$3(this)); 





    GroupLayout layout = new GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
     .addContainerGap() 
     .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
     .addGap(8, 8, 8) 
     .addComponent(jLabel1) 
     .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
     .addComponent(inputFileField, -2, 331, -2) 
     .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
     .addComponent(inputFileButton) 
     .addGap(0, 12, 32767)) 
     .addGroup(layout.createSequentialGroup() 
     .addComponent(startButton, -1, -1, 32767) 
     .addContainerGap())))); 

    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
     .addContainerGap() 
     .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
     .addComponent(jLabel1) 
     .addComponent(inputFileField, -2, -1, -2) 
     .addComponent(inputFileButton)) 
     .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
     .addComponent(startButton) 
     .addContainerGap(-1, 32767))); 


    pack(); 
    } 

    private void inputFileButtonActionPerformed(java.awt.event.ActionEvent evt) { 
    inputFileChooser.showOpenDialog(this); 
    } 

    private void inputFileChooserActionPerformed(java.awt.event.ActionEvent evt) { 
    inputFileField.setText(inputFileChooser.getSelectedFile().getAbsolutePath()); 
    startButton.setEnabled(true); 
    } 

    private void startButtonActionPerformed(java.awt.event.ActionEvent evt) { 
    ScriptWorker.inFile = inputFileChooser.getSelectedFile(); 
    ScriptWorker.guiDone = true; 
    dispose(); 
    } 







    public static void main(String[] args) 
    { 
    try 
    { 
     for (javax.swing.UIManager.LookAndFeelInfo info :) { 
     if ("Windows".equals(info.getName())) { 
      javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
      break; 
     } 
     } 
    } catch (ClassNotFoundException ex) { 
     java.util.logging.Logger.getLogger(BankValueGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (InstantiationException ex) { 
     java.util.logging.Logger.getLogger(BankValueGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (IllegalAccessException ex) { 
     java.util.logging.Logger.getLogger(BankValueGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
     java.util.logging.Logger.getLogger(BankValueGUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } 



    java.awt.EventQueue.invokeLater(new BankValueGUI$4()); 
    } 
} 

、ここで、クラスの

class 1 implements ActionListener { 
     @Override 
     public void actionPerformed(final ActionEvent evt) { 
      BankValueGUI.access$0(BankValueGUI.this, evt); 
     } 
    } 

    class 2 implements ActionListener { 
     @Override 
     public void actionPerformed(final ActionEvent evt) { 
      BankValueGUI.access$1(BankValueGUI.this, evt); 
     } 
    } 

    class 3 implements ActionListener { 
     @Override 
     public void actionPerformed(final ActionEvent evt) { 
      BankValueGUI.access$2(BankValueGUI.this, evt); 
     } 
    } 

    class 4 implements Runnable { 
     @Override 
     public void run() { 
      new BankValueGUI().setVisible(true); 
     } 
    } 

ではない私はSO TRIBOTs LIBRARYはSO TRIBOT関連コンテンツに関するYOUR END ON以上のエラーがあるでしょうEXTENDEDライブラリを使用していTAKEです。

+0

ごみ箱を確認しましたか?) – Abubakkar

+0

あなたのクラスに1〜4の名前を付けましたか? – redFIVE

+0

はい私はrecuvaツールも試しましたが、運はありません:/ –

答えて

2

しかし、それは1つの.javaファイルに逆コンパイルしていない、それは1クラスではありませんので、だ5

に逆コンパイルされます。

匿名クラスは、慣例によりContainingClass$Numberという名前のクラスにコンパイルされていますが、明示的に呼ばれるクラスを作成することができない理由理由はありませんされている - そうBankValueGUI$1がトップネストされたクラスではないことを知っている方法はありません同じ名前のクラスです。再びメインクラスにクラスのを配置しようとする際に

私は

クラス名は、有効なJava識別子である必要がありますエラーを受け取るために続けています。 Javaの識別子は数字で始めることはできません。 (JLS Section 3.8参照)。

逆コンパイラではBankValueGUI$1などのクラスは作成されませんが、それはデコンパイラのバグ(または少なくとも「機能」)に過ぎません。

2

JVMには、内部クラスの概念はありません。 Javaコンパイラjavacは、内部クラスをBankValueGUI $ 1などの別のクラスとしてコンパイルし、これらの非静的クラスにはこの外部クラスインスタンスを参照する$ 0というメンバがあります。

したがって、内部クラスはそれぞれ独立したクラスです(ただし、クラスには使用できませんが、コンパイラを通過することはできません)。クラス名とメソッド名は、有効なJava識別子でなければなりません(JLSセクション3.8)。あなたのエラーについては

、見てみましょう:ここ

class 1 implements ActionListener { 
     @Override 
     public void actionPerformed(final ActionEvent evt) { 
      BankValueGUI.access$0(BankValueGUI.this, evt); 
     } 
    } 
} 

$ 0アクセス外部クラスのインスタンスのフィールドにアクセスする内部クラスをサポートし、$ 0アクセスするためのjavacによって追加方法が有効な名前ではありません。明らかにエラーが発生します。

クラスファイルを逆コンパイルして、変更を最小限に抑えて作業コードを作成することは容易ではありません。あなたは多くを変更する必要があります。具体的には、これらのクラスをすべて内部クラスにする必要があります。

関連する問題