この質問が何度か尋ねられたり回答されたりしたことは知っていますが、このClassNotFoundException
エラーの解決策を見つけることができませんでした。これは、コンピューターでは機能しますが、RasPi (OpenJDK7 をインストールした) では機能しないためです。
私のアプリケーションは JDBC を使用して MySQL データベースにアクセスしますが、これが主な問題です。多くの Web サイト ( [1]、[2]、[3] ) で指摘されているように、残念ながら、これはよくある問題です。
だから、私はmysql-connector-java-5.0.8.jar
ドライバーとして使用しています。私のフォルダ構造は、(他のすべてのクラスなどを開始するメインクラスである)/src/de/web/project/
経由でメインメソッドを呼び出しているようなものです。共通の ClassNotFound 例外が発生したため、-cp パラメータを追加したので、クラスパスへのドライバー。java de.web.project.WakeOnLan
java -cp .;mysql-connector-java-5.0.8.jar de.web.project.WakeOnLan
これはコマンド ラインから Windows コンピューターでうまく機能しましたが、このコードを Raspberry Pi にプッシュしてそこで実行したいと考えています。私が言ったように、そこに OpenJDK7 をインストールし (これが重要な場合は apt-get を使用)、SFTP を使用してフォルダー構造とコードを /home/pi/java/ にアップロードしました。ここには ejre1.7.0_10 フォルダー (そのため、コードは実際には /home/pi/java/de/web/project/ にあります)。
/home/pi/java に戻りjava -cp .;mysql-connector-java-5.0.8.jar de.web.project.WakeOnLan
、Windows コンピューターと同じように入力しましたが、動作しません (念のため、コネクタを途中の任意のフォルダーに配置しました)。この関数を呼び出すと、Java で許可されているパラメーターを Java が提供しようとしているヒントの長いリストが表示され、最後に次のように述べられています-bash: mysql-connector-java-5.0.8.jar: command not found
。また、「.;mysql...」を「mysql...;.」に変えてみました。これもうまくいきませんでした。-cp パラメーターを含めない場合、プログラムは「スレッド開始」と次の行に次のjava.lang.ClassNotFoundException: com.mysql.jdbc.Driver
ように表示するため、プログラムは実際に開始し、「スレッド開始」を System.out に書き込みます。
なんらかの理由で、Pi 上の Java が classpath パラメータの 2 番目の値を無視したように見えますが、これには正当な理由がありません。