2016-04-13 53 views
-3

好吧我編譯了我的腳本,其中輸出了5個類,BankValueGUI,BankValueGUI $ 1,BankValueGUI $ 2 &等。我不小心刪除了源文件,所以我不得不對它進行反編譯,但是它沒有反編譯成1.java文件,它被反編譯成了5個。一旦嘗試將Class放入主類中,我會繼續接收錯誤,這裏的主要來源:一類中的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); 
     } 
    } 

拿不出我使用擴展庫,以便TRIBOTs庫,所以會有您的最終更多的錯誤有關TRIBOT相關的內容。

+0

你檢查了你的回收站;)? – Abubakkar

+0

你的名字是你的名字1 - 4嗎? – redFIVE

+0

是的,我已經嘗試過recuva工具,也沒有運氣:/ –

回答

2

但是它沒有地反編譯爲1個java文件,它的反編譯成5

這是因爲它不是1級。

按照慣例,匿名類被編譯爲名爲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由javac的加入到支持內部類訪問外部類實例的字段和訪問$ 0不是一個有效的名稱的方法。顯然你會得到一個錯誤。

反編譯你的類文件並期望有最小改動的工作代碼並不是一件容易的事。你可能需要改變很多。更具體地說,你必須使所有這些類的內部類。