0

この質問が何度か尋ねられたり回答されたりしたことは知っていますが、この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.WakeOnLanjava -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 番目の値を無視したように見えますが、これには正当な理由がありません。

4

1 に答える 1

1

クラスパスの設定に問題がある可能性があります.WindowsとLinuxには違いがあります.

クラスパスの構文は OS に依存します。ウィキペディアから:

ファイル システムと密接に関連しているため、コマンドラインのクラスパス構文はオペレーティング システムによって異なります。例えば:

すべての Unix ライクなオペレーティング システム (Linux や Mac OS X など) では、ディレクトリ構造は Unix 構文を持ち、個別のファイル パスはコロン (":") で区切られています。

Windows では、ディレクトリ構造には Windows 構文があり、各ファイル パスはセミコロン (";") で区切る必要があります。

これは、クラスパスがマニフェスト ファイルで定義されている場合には適用されません。オペレーティング システムに関係なく、各ファイル パスをスペース (" ") で区切る必要があります。

于 2013-03-07T21:16:57.140 に答える