2013-04-12 3 views
0

Я создал проект в NetBeans с SQLite, как DB.When я запустить его в NetBeans он прекрасно работает, когда я запускаю банку с использованием «Java -jar .jar» он бросает это исключениеИсключение метания при работе с банкой

Н:> Java -jar Remote_PC_Manger.jar Исключение в потоке "АВТ-EventQueue-0" java.lang.NullPointerException в com.halorpm.main.LocalDB.checkAnonymous (LocalDB.java:74) на ком. halorpm.main.MainForm.initComponents (MainForm.java:172) at com.halorpm.main.MainForm. (MainForm.java:137) at com.halorpm.main.Core. (Core.java:32) at Колорадо m.halorpm.main.Core $ 3.run (Core.java:142) на java.awt.event.InvocationEvent.dispatch (Неизвестный источник) на java.awt.EventQueue.dispatchEventImpl (Неизвестный источник) на java.awt .EventQueue.access $ 200 (Неизвестный источник) at java.awt.EventQueue $ 3.run (Неизвестный источник) at java.awt.EventQueue $ 3.run (Неизвестный источник) at java.security.AccessController.doPrivileged (собственный метод) в java.security.ProtectionDomain $ 1.doIntersectionPrivilege (Неизвестный Sour в.п.) в java.awt.EventQueue.dispatchEvent (Unknown Source) в java.awt.EventDispatchThread.pumpOneEventForFilters (Unknown Source) в java.awt.EventDispatchThread. pumpEventsForFilter (Неизвестный источник) в java.awt.EventDispatchThread.pumpEventsForHierarchy (Unknown Source) в java.awt.EventDispatchThread.pumpEvents (Unknown Source) в java.awt.EventDispatchThread.pumpEvents (Unknown Source) в java.awt.EventDispatchThread.run (Неизвестно Источник)

MainForm.java 


/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package com.halorpm.main; 

import java.awt.SystemTray; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.net.URLConnection; 
import java.sql.SQLException; 

/** 
* 
* @author Abhijith S 
*/ 
public class MainForm extends javax.swing.JFrame { 

    public String fullname; 
    public String key; 
    public int status; 

    public MainForm() { 



     Thread getinfo = new Thread() { 

      @Override 
      public void run() { 

       try { 


     // Send the request 
     URL url = new URL("http://demiracles.com/halo/cgi/getmisc.php?uname="+Login.username+"&key=name"); 
     URL url1 = new URL("http://demiracles.com/halo/cgi/getmisc.php?uname="+Login.username+"&key=skey"); 
     URLConnection conn = url.openConnection(); 
     URLConnection conn1 = url1.openConnection(); 

     conn.setDoOutput(true); 
     // OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream()); 

     //write parameters 
     // writer.write(data); 
     // writer.flush(); 

     // Get the response 
     StringBuilder answer = new StringBuilder(); 
     StringBuilder answer1 = new StringBuilder(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
     BufferedReader reader1 = new BufferedReader(new InputStreamReader(conn1.getInputStream())); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      //System.out.println(line); 
      answer.append(line); 
     } 
     while ((line = reader1.readLine()) != null) { 
      //System.out.println(line); 
      answer1.append(line); 
     } 

     // writer.close(); 
     reader.close(); 
     reader1.close(); 

     //Output the response 
     //System.out.println(answer.toString()); 
     fullname = answer.toString(); 
     key = answer1.toString(); 

     regname.setText(fullname); 
     lic.setText(key); 
     expire.setText("2018-November-20"); 







    } catch (MalformedURLException ex) { 
     ex.printStackTrace(); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 

      } 

     }; 
     getinfo.start(); 

     /* Thread mainer = new Thread(){ 


       public void run(){ 

        System.out.println("out"); 

       while(true){ 
       try{ 
            System.out.println("sasasa"); 
        URL url = new URL("http://demiracles.com/halo/cgi/java_checker.php?uname="+Login.username+ 
              "&pwd="+Login.password); 
        URLConnection urlcon = url.openConnection(); 
        BufferedReader bf = new BufferedReader(new InputStreamReader(urlcon.getInputStream())); 
        String xresponse = bf.readLine(); 
     System.out.println("In ThreadCheck"+xresponse); 
     new Functions(xresponse); 
     break; 


      }catch(Exception x){  

       System.out.println(x); 

      } 
        } 


       } 




      }; 
      mainer.start(); 

     */ 




     initComponents(); 


    } 

    /** 
    * This method is called from within the constructor to initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is always 
    * regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
    private void initComponents() { 

     buttonGroup1 = new javax.swing.ButtonGroup(); 
     buttonGroup2 = new javax.swing.ButtonGroup(); 
     buttonGroup3 = new javax.swing.ButtonGroup(); 
     regname = new javax.swing.JLabel(); 
     jCheckBox1 = new javax.swing.JCheckBox(); 
     lic = new javax.swing.JLabel(); 
     expire = new javax.swing.JLabel(); 
     jLabel2 = new javax.swing.JLabel(); 
     jLabel3 = new javax.swing.JLabel(); 
     jLabel4 = new javax.swing.JLabel(); 
     jLabel1 = new javax.swing.JLabel(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
     setMinimumSize(new java.awt.Dimension(640, 480)); 
     setResizable(false); 
     getContentPane().setLayout(null); 
     getContentPane().add(regname); 
     regname.setBounds(400, 40, 210, 20); 

     jCheckBox1.setText("Anonymous"); 
     LocalDB ob = new LocalDB(); 
     int res = ob.checkAnonymous(); 
     if(res==1) { 

      jCheckBox1.setSelected(true); 

     } 
     jCheckBox1.addItemListener(new java.awt.event.ItemListener() { 
      public void itemStateChanged(java.awt.event.ItemEvent evt) { 
       jCheckBox1ItemStateChanged(evt); 
      } 
     }); 
     jCheckBox1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jCheckBox1ActionPerformed(evt); 
      } 
     }); 
     getContentPane().add(jCheckBox1); 
     jCheckBox1.setBounds(40, 190, 81, 23); 
     getContentPane().add(lic); 
     lic.setBounds(400, 70, 210, 20); 
     getContentPane().add(expire); 
     expire.setBounds(400, 100, 210, 20); 

     jLabel2.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N 
     jLabel2.setText("Registered to : "); 
     getContentPane().add(jLabel2); 
     jLabel2.setBounds(310, 40, 90, 15); 

     jLabel3.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N 
     jLabel3.setText("License   : "); 
     getContentPane().add(jLabel3); 
     jLabel3.setBounds(310, 70, 90, 15); 

     jLabel4.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N 
     jLabel4.setText("Expire on  :"); 
     getContentPane().add(jLabel4); 
     jLabel4.setBounds(310, 100, 90, 15); 

     jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/halorpm/main/bg_main.png"))); // NOI18N 
     getContentPane().add(jLabel1); 
     jLabel1.setBounds(0, 0, 640, 480); 

     pack(); 
    }// </editor-fold> 

    private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {           




    }           

    private void jCheckBox1ItemStateChanged(java.awt.event.ItemEvent evt) {            

    FileManager ob = new FileManager(); 
    LocalDB db = new LocalDB(); 

     if(jCheckBox1.isSelected()== true) { 


      db.addUpdate(1); 

      ob.createFile(); 
      this.setVisible(false); 

      if(Core.appStatus==0) { 

       Core.runTray(); 

      } 




     }else { 

      db.addUpdate(0); 
      ob.deleteFile(); 

     } 




    }           

    public void viewDisplay() { 

     setVisible(true); 

    } 

    /** 
    * @param args the command line arguments 
    */ 

    // Variables declaration - do not modify 
    private javax.swing.ButtonGroup buttonGroup1; 
    private javax.swing.ButtonGroup buttonGroup2; 
    private javax.swing.ButtonGroup buttonGroup3; 
    private javax.swing.JLabel expire; 
    protected javax.swing.JCheckBox jCheckBox1; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel2; 
    private javax.swing.JLabel jLabel3; 
    private javax.swing.JLabel jLabel4; 
    private javax.swing.JLabel lic; 
    private javax.swing.JLabel regname; 
    // End of variables declaration 
} 



enter code here 
enter code here 

LocalDB.java 



/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package com.halorpm.main; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

/** 
* 
* @author Abhijith S 
*/ 
public class LocalDB { 

    private Connection con; 
    protected Statement st; 
    // protected ResultSet res; 
    int status; 
    String uname; 
    String pass; 

    public LocalDB() { 

      try { 
     // sqlite driver 
    Class.forName("org.sqlite.JDBC"); 
    // database path, if it's new database, 
    // it will be created in the project folder 
    con = DriverManager.getConnection("jdbc:sqlite:halodb.db"); 

    try{ 

     st = con.createStatement(); 
     // String qry3 = "UPDATE userlog SET anonymous=1"; 


     // 




     //System.out.println("done"); 


     }catch(SQLException e) { 



     } 

     }catch(ClassNotFoundException | SQLException e) { 





     } 


    } 

    public int checkAnonymous(){ 


     try { 

      String qry1 = "SELECT * FROM userlog"; 

     // st.executeUpdate(qry3); 
     ResultSet res = st.executeQuery(qry1); 
     while(res.next()) { 


     status = res.getInt("anonymous"); 

     System.out.println("Anonymous = "+status); 



     } 




    }catch(SQLException e){ 



    } 

    return status; 
    } 
    public void addUpdate(int a) { 

     try { 
       // String table = "CREATE TABLE userlog (uname VARCHAR, pass VARCHAR, anonymous INTEGER, normal INTEGER)"; 
       //String qry = "INSERT INTO userlog values('abi','12345',0,1)"; 
       String qry3 = "UPDATE userlog SET anonymous="+a; 
       st.executeUpdate(qry3); 


      }catch(SQLException e) { 

       e.printStackTrace(); 

      } 

    } 

} 
+3

У вас есть пустые блоки блокировки везде в вашем коде. ** Никогда ** не делайте этого. ***Когда-либо***. Вы также водите машину с закрытыми глазами? –

+0

Здесь слишком много кода. Возможно, публикация только соответствующего класса и метода будет лучше. – Makoto

ответ

0

При использовании -jar параметра командной строки, она игнорирует CLASSPATH. Я подозреваю, что ваш проект Netbeans имеет все зависимости, которые отсутствуют, когда вы переходите в командную строку. Попробуйте запустить снова:

java -cp %CLASSPATH%;Remote_PC_Manger.jar <main-class> 

Установите все библиотечных зависимостей (например, SQLite) в CLASSPATH (или добавить их непосредственно в командной строке, а).

Edit:

После приглядевшись, я думаю, что ваше исключение (строка 74 в LocalDB), как представляется, эта строка:

ResultSet res = st.executeQuery(qry1); 

Это означает, что st равно нулю - что означает st = con.createStatement(); дальше назад не удалось. Вы перехватываете эти исключения и ничего не делаете с ними (как заметил наводнение на воздушной подушке). По крайней мере, зарегистрируйте их. Я думаю, вы обнаружите, что исключение, которое вы получаете, связано с более ранней проблемой.

Я подозреваю, что линия Class.forName("org.sqlite.JDBC"); бросает ClassNotFoundException, когда вы бежите из банки.

+0

Не является ли путь класса jar в его файле манифеста? –

+0

@Hovercraft: Не уверен (я не знаю, как была создана банка, и я не знаю, что это не так). Я ожидаю, что это будет не так, если вы не сделаете какую-то работу, чтобы настроить его таким образом? – Ash

+0

, так как он запускает программу с помощью команды -jar в командной строке, то я считаю, что информация о пути к маршруту должна находиться в файле манифеста в соответствии с [jar file tutorial] (http://docs.oracle.com/ javase/tutorial/deployment/jar/downman.html) и [эта ссылка на stackoverflow] (http://stackoverflow.com/questions/945962/java-problem-running-a-jar-file-in-commandline). –

Смежные вопросы