2017-02-17 6 views
1

私は以前の質問:NoClassDefFoundError with bluecove's javax.microedition に質問しましたが、回答はありませんでした。NoClassDefFoundError Javaでブルートゥースを使用

bluetoothが必要なJavaコード(Server.java)を実行しようとしているので、bluecove-2.1.0.jarファイルをC:\ Program Files \ Javaにインストールしました。

私はjavac -cp "C:\Program Files\Java\bluecove-2.1.0.jar";. Server.javaで私のコードをコンパイルし、それが正常にコンパイルが、私はそれを実行したとき、私はエラーを取得するjava Server -cp "C:\Program Files\Java\bluecove-2.1.0.jar"

でそれを実行します。

Error: A JNI error has occurred, please check your installation and try again 
Exception in thread "main" java.lang.NoClassDefFoundError: javax/microedition/io/Connection 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source) 
    at java.lang.Class.privateGetMethodRecursive(Unknown Source) 
    at java.lang.Class.getMethod0(Unknown Source) 
    at java.lang.Class.getMethod(Unknown Source) 
    at sun.launcher.LauncherHelper.validateMainClass(Unknown Source) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: javax.microedition.io.Connection 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 7 more 

私が間違って行ってきた任意のアイデア?

EDIT:続きマイナスの答え、私も、私は問題は.dllファイルが正しくロードされていないことであるhttp://snapshot.bluecove.org/distribution/download/2.1.1-SNAPSHOT/2.1.1-SNAPSHOT.63/

+0

Javaクラスの前にクラスパスargを呼び出すとどうなりますか(つまりjava -cp "blah.bluecove" Server)。 – mcalex

+0

@mcalexエラー:「エラー:メイン・クラス・サーバーを見つけられないかロードできません」 – w1nter

+0

@ w1nter、 どうもありがとうございました!その2.1.1-SNAPSHOTリンクとその中の 'intelbth_x64.dll'は私の問題を解決します。最新の公式リリース2.1.0(2008年)は明らかに古すぎます。 –

答えて

2

からダウンロードした別の.jarファイルを使用するために必要な、続くエラーを修正します。

ライブラリには、ディスクに保存されて読み込まれる.dllが含まれている必要があります。プログラムは.dllをディスクに保存できないか、読み込めません。

.dllを抽出し、bluecove installation instructionsに、ネイティブライブラリの場所に従ってください。例えば

はディレクトリc:\blue、およびディレクトリblue\libを作成します。

このようなファイルを置く:Cに

C:\blue\Sever.java 
C:\blue\Sever.class 
C:\blue\[bluecove_native_library].dll 
C:\blue\lib\bluecove-2.1.0.jar 

オープン(コマンドプロンプト)CMDを:青

\このようにアプリを実行してみ:

java -cp .;lib\bluecove-2.1.0.jar -Dbluecove.native.resource=false Server 

この方法クラスパスにはServer.classとbluecove-2.1.0.jarがあり、パスにはDLLがあります(Windowsでは現在のディレクトリがパスになっています)。 (。;)

+0

私はそれが問題になる理由を理解していますが、この.dllファイルはどこから抽出する必要があるのですか? – w1nter

+0

jarファイル内にあるはずです。 Jarファイルはジッパーだけなので、解凍ツール(7zip、izarch ... any)で簡単にコンテンツを抽出できます。 – minus

+0

これで、.jarファイルからファイルを抽出しました。インストール手順を使用して、私は 'java server -cp"/path/to/jar "-Dbluecove.native.path =/your/path'を/ C:/ path/to/dirにするか、 'C:/ path/to/dll'や' 'C:/ path/to/dir ''や 'C:\ path \ to \ dir'やその他の変種? – w1nter

1

は、クラスパスに現在のフォルダを追加し、あなたのコードはパッケージ名フォルダ内にあることを確認してください。 だからあなたのサーバは、パッケージ名を持っている場合: mypackageと は、あなたのクラスコードが/mypackageとに親フォルダに移動し、呼び出すよりも/mypackageとディレクトリ であることを確認してください。

javaの -

+0

これで、Server.classを持つディレクトリにあります。 serverPackageという名前のディレクトリを作成し、そこにServer.classを入れました。 C:\ Program Files \ Java \ bluecove-2.1.0.jar "serverPackage.Server'これはあなたが意味するものですか?エラー: 'エラー:メインクラスサーバを見つけられないか読み込めませんでした' – w1nter

+0

サーバクラスのパッケージ名がserverPackageとも呼ばれていますか? このフォルダ名はServerクラスのパッケージ名と同じでなければなりません。呼び出しには完全なパッケージ名を使用します –

+0

Ohh私のクラスファイルはスタンドアローンでした。それは私がコマンドラインでコンパイルした.javaファイルを持っていれば必要ないはずです。私はちょうどパッケージについてのフィドルを持っていましたが、コンパイルしようとすると「見つからない、メイン・クラスのサーバーをロードする」ことさえできません - できるだけその問題を別の日のままにして、単純な.java .classファイルに固執してください – w1nter

関連する問題