質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

5223閲覧

JavaでSQLite利用時のClassNotFoundExceptionについて

torimingo

総合スコア122

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/12/15 01:05

Java初心者です。
JavaでSQLiteを利用したいのですが、実行時エラー(?)のClassNotFoundExceptionが解決できません。
以下にコードなどを掲載します。

java

1 1 // TestSqlite.java 2 2 3 3 import java.sql.*; 4 4 5 5 public class TestSqlite { 6 6 public static void main(String args[]) throws Exception { 7 7 Class.forName("org.sqlite.JDBC"); 8 8 Connection conn = DriverManager.getConnection("jdbc:sqlite::memory:"); 9 9 Statement stmt = conn.createStatement(); 10 10 ResultSet rs = stmt.executeQuery("SELECT sqlite_version()"); 11 11 rs.next(); 12 12 String row = rs.getString(1); 13 13 System.out.println(row); 14 14 rs.close(); 15 15 conn.close(); 16 16 } 17 17 } 18 19■コンパイル 20javac --release 8 TestSqlite.java 21 22■実行 23java -classpath .:sqlite-jdbc-3.32.1.jar TestSqlite 24 25■エラー 26Exception in thread "main" java.lang.ClassNotFoundException: org.sqlite.JDBC 27 at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 28 at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 29 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 30 at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 31 at java.lang.Class.forName0(Native Method) 32 at java.lang.Class.forName(Class.java:264) 33 at TestSqlite.main(TestSqlite.java:7) 34 35■フォルダの内容 36 TestSqlite.class 37 TestSqlite.java 38 sqlite-jdbc-3.23.1.jar

海外のサイトなどを調べても、解決できませんでした。
どなたかご存知の方がおられましたら、教えていただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2018/12/15 01:40

Javaやjdbcドライバーのバージョンによる問題のように見受けられます。バージョン情報を明示すると適切な回答を得られやすくなると思います。 ("--release"フラグがあるので、Java9以降のように思えますが、Javaのバージョンは?、sqlite-jdbc-3.32.1.jarはどこで入手したものでしょうか? 動作環境はlinuxですか?)
torimingo

2018/12/15 01:47

すみません、自己解決いたしました。 バージョン明記のことなど、アドバイスをありがとうございました。
guest

回答2

0

自己解決

自己解決しました。
ファイル名を誤って指定していました・・・。
誤) java -classpath .:sqlite-jdbc-3.32.1.jar TestSqlite
正) java -classpath .:sqlite-jdbc-3.23.1.jar TestSqlite

投稿2018/12/15 01:42

torimingo

総合スコア122

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2018/12/15 01:48

3.23.1 までしかダウンロードできないのでおかしいと思いました。解決してよかったです。
guest

0

classpathの指定の部分でセミコロンを使うべきところをコロンにしているためではないでしょうか。

java -classpath .;sqlite-jdbc-3.32.1.jar TestSqlite

投稿2018/12/15 01:36

mdrmsox

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

torimingo

2018/12/15 01:39

ご回答をありがとうございます。 セミコロンにしてみましたが、動きませんでした・・・。 linuxを使っているのですが、コロンで正しいようです。 windowsでは、セミコロンを使うのが正しいようです。
dodox86

2018/12/15 01:43

Windows + Java8で古いsqlite-jdbcで試したところでは動くので、Class.forNameメソッドのバージョン間の動作違いが原因のようです。
torimingo

2018/12/15 01:48

すみません、自己解決いたしました。 Javaではバージョンの違いを意識しないといけないんですね。 心に留めておきます。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問