4989
現在 Java にて、 API を使い DB からデータを読み込むプログラムを作っています。

しかし、うまく動作しないため困っています。 自分で調べたりしているのですがよくわかりません。どなたかお助け願います。

以下を実行すると「例外発生: `java.lang.ClassNotFoundException:
com.mysql.jdbc.Driver`」とでて、実行結果は「`{"prefecture":""}`」と表示されるだけになります。 まだ Java
をはじめて半月くらいなのであまり詳しくないため質問に至りました。

よろしくお願いします。

1: PreResouce.java

```

    package com.sample.rest;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.PathParam;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;
    
    import com.sample.rest.data.Prefecture;
    
    @Path("pref")
    @Produces(MediaType.APPLICATION_JSON)
    public class PrefResouce {
    
        @GET
        @Path("{cd}")
        public Prefecture getPaef(@PathParam("cd") Integer cd) {
    
            Prefecture pref = new Prefecture();
    
            try {
                Class.forName("com.mysql.jdbc.Driver");
    
                String url = "jdbc:mysql://localhost/SampleDB040";
                String user = "testuser";
                String password = "*****";
    
                Connection conn = DriverManager.getConnection(url, user, password);
                Statement stmt = conn.createStatement();
                String sql = "select * from t01prefecture";
                ResultSet rs = stmt.executeQuery(sql);
    
                rs.close();
                stmt.close();
                conn.close();
                while (rs.next()) {
                    int prefCd = rs.getInt("pref_cd");
                    String prefName = rs.getString("pref_name");  // 都道府県
                    int areaCd = rs.getInt("area_cd");  // 東西
                    int contCd = rs.getInt("cont_cd");  // 地方
                    int helzCd = rs.getInt("helz_cd");  // 電気周波数
    
                    pref.setPrefCd(prefCd);
                    pref.setPrefName(prefName);
                    pref.setAreaCd(areaCd);
                    pref.setContCd(contCd);
                    pref.setHelzCd(helzCd);
                }
            } catch (Exception e) {
                System.out.println("例外発生:" + e);
            }
            return pref;
    
        }
    
    }
    
```

2: Prefecture.java

```

    package com.sample.rest.data;
    
    import javax.xml.bind.annotation.XmlRootElement;
    
    @XmlRootElement
    public class Prefecture {
        private Integer prefCd;
        private String prefName;
        private Integer areaCd;
        private Integer contCd;
        private Integer helzCd;
        public Integer getPrefCd() {
            return prefCd;
        }
        public void setPrefCd(Integer prefCd) {
            this.prefCd = prefCd;
        }
        public String getPrefName() {
            return prefName;
        }
        public void setPrefName(String prefName) {
            this.prefName = prefName;
        }
        public Integer getAreaCd() {
            return areaCd;
        }
        public void setAreaCd(Integer areaCd) {
            this.areaCd = areaCd;
        }
        public Integer getContCd() {
            return contCd;
        }
        public void setContCd(Integer contCd) {
            this.contCd = contCd;
        }
        public Integer getHelzCd() {
            return helzCd;
        }
        public void setHelzCd(Integer helzCd) {
            this.helzCd = helzCd;
        }
    }
    
```

3: ApplicationConfig.java

```

    package com.sample.rest;
    
    import java.util.HashSet;
    import java.util.Set;
    
    import javax.ws.rs.ApplicationPath;
    import javax.ws.rs.core.Application;
    
    @ApplicationPath("/api")
    public class ApplicationConfig extends Application {
    
        @Override
        public Set<Class<?>> getClasses() {
            Set<Class<?>> resources = new HashSet<>();
            resources.add(PrefResouce.class);
            return resources;
        }
    }
    
```
CC BY-SA 3.0
2015-01-21T08:17:56.187
4988
2015-01-21T09:27:51.437
2015-01-21T09:27:51.437
4978
7635
question
java mysql jdbc
Java からSQLを発行しようとしたが、 MySQL ドライバが読み込まれない
JDBCドライバー(`com.mysql.jdbc.Driver`)がクラスパス内にないために例外が発生しています。

[MySQL :: Download Connector/J](http://dev.mysql.com/downloads/connector/j/) で
`Select Platform` を `Platform Independent` にした上でzip版をダウンロードし、そのzipを解凍して得られる
`mysql-connector-java-x.x.x-bin.jar` をclasspathに通してください。  
ソースコードを拝見する限り、JAX-RSを利用しているようなので `jersey-core-x.x.jar` などが置かれているディレクトリーに
`mysql-connector-java-x.x.x-bin.jar` を配置すればAPサーバーがクラスパスに通して起動してくれるかもしれません。  
// Jerseyを使ってなかったらごめんなさい

どこかしらのサイトを参考にプログラムを作っていると思われますが、どこのサイトかわかればクラスパスに通す方法を詳しく説明できるかもしれません。
CC BY-SA 3.0
2015-01-21T08:52:55.987
4989
2015-01-21T08:52:55.987
3160
4988
answer