0

JSONプログラミングは初めてです。SQLite テーブルからデータをフェッチし、出力を JSON ファイルに書き込む Web サービスを作成しようとしています。JSON シンプル jar を eclipse プロジェクトに追加しました。以下に示すようにコード行を追加すると、

JSONObject obj = new JSONObject();

正しくコンパイルされます。しかし、Web サービスが呼び出されると、以下に示すように、この行で例外が発生します。

Exception: java.lang.reflect.InvocationTargetException Message: java.lang.reflect.InvocationTargetException 

これは私の完全なJavaファイルです...

package wtp;

import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

import org.json.simple.JSONObject;
import org.json.simple.JSONArray;

public class CollegeProcessor2 {

    public static String fetchCollegeList2(String input)
    {
        Connection c = null;
        Statement stmt = null;
        String output = null;
        java.util.Date date= new java.util.Date();

        JSONObject collegeList = new JSONObject();     
        JSONObject college = new JSONObject();
        JSONArray list = new JSONArray();       

        try {

          Class.forName("org.sqlite.JDBC");
          c = DriverManager.getConnection("jdbc:sqlite:C:\\Users\\Vevin.Kumar\\workspace\\JSONProject\\collegelist.db");
          c.setAutoCommit(false);
          System.out.println("Opened database successfully");

          stmt = c.createStatement();
          ResultSet rs = stmt.executeQuery( "SELECT * FROM COLLEGES WHERE DISTRICT LIKE \"" + input +"\" ;");         

          ResultSetMetaData metaData = rs.getMetaData();
          int numberOfColumns=metaData.getColumnCount();

          while ( rs.next() ) {          
             for(int i = 1; i <= numberOfColumns; i++)
             {
                college.put(String.valueOf(metaData.getColumnName(i)), String.valueOf(rs.getObject(i)));
             }      
             list.add(college);
          } 

          collegeList.put("collegeslist", list);

          rs.close();
          stmt.close();
          c.close();

        } catch ( Exception e ) {
          System.err.println( e.getClass().getName() + ": " + e.getMessage() );
          System.exit(0);
        }

        try{     

           FileWriter file = new FileWriter("c:\\json_outputs\\collegelist_" + date.getTime() +".json");
           file.write(collegeList.toJSONString());
           file.flush();
           file.close();

        } catch ( IOException e ){
           System.err.println( e.getClass().getName() + ": " + e.getMessage() );
           System.exit(0);            
        }

        System.out.println("Operation done successfully");
        output = "c:\\json_outputs\\collegelist_" + date.getTime() +".json";
        return output;
    }   

    /*public static void main (String[] args)
    {
        String output = fetchCollegeList2("CHENNAI");
        System.out.println(output);
    }*/
}

これを Java アプリケーションとして実行すると、JSON ファイルが正しく生成されます。これからボトムダウン Web サービスを作成し、そこからメソッドを呼び出すと、上記の例外が発生します。例外は、JSONObject が初期化される行で発生します。

誰でもこれについて私を助けてもらえますか?

よろしくお願いします、Vevin。

4

0 に答える 0