2012-03-20 3 views
0

のPhidg​​etプロジェクトにクラスのフィールドを取得できませんでした重大なエラー - (phidgets.com)と私はのJava:私はのPhidg​​et加速度計を使用してJavaプロジェクトをやってる

sudo java -jar phidgetTester.jar 
    /usr/lib/jvm/java-6-openjdk/jre/lib/i386/client:/usr/lib/jvm/java-6-openjdk/jre/lib/i386:/usr/lib/jvm/java-6-openjdk/jre/../lib/i386:/usr/java/packages/lib/i386:/usr/lib/jni:/lib:/usr/lib 
    making new phidget 
    CRIT: Couldn't get Field ID managerPhidget from phidget_class 
    Exception in thread "main" java.lang.NoSuchFieldError: managerPhidget 
     at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
     at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1750) 
     at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1675) 
     at java.lang.Runtime.loadLibrary0(Runtime.java:840) 
     at java.lang.System.loadLibrary(System.java:1047) 
     at com.phidgets.Phidget.<clinit>(Phidget.java:26) 
     at phidgettester.PhidgetTester.<init>(PhidgetTester.java:40) 
     at phidgettester.main.main(main.java:15) 

が、私はこのエラーを取得するエラーを取得しますあるコンピュータで私のプログラム(sudo java -jar phidgetTester.jar)を実行するが、別のコンピュータでは実行しない。つまり、私の開発システムでは、プログラムを構築して実行できますが、実際に使用したいシステムでは、上記のエラーが発生します。 問題を引き起こしている可能性のある提案これは単なるクラスパス問題(これは私には驚くかもしれません)ですか、それとももっと不吉なことですか?

プログラムをインストールするには、netbeansによって生成された「dist」フォルダにコピーします。これには自分のプログラム用の.jarが含まれています。/ libフォルダには、phidgetを使用するために必要なphidget21.jarファイルドライバを開発マシンにインストールします。

私は、phidgetsからデータを読み取ることができるpythonテストスクリプトを実行しているので、ネイティブライブラリは問題なく、問題は純粋にjavaベースですが、私はそのような小さな単純なプログラム私は外部環境に非常に偶然のエラーがある可能性があります。

はここに私のメインの方法です(ちょうどそれをチェックアウトするライブラリパスの事で投げたが、彼らは両方のマシンに同じ基本的に見える):

package phidgetTester; 

public class main { 

    public static void main(String[] args) throws Exception { 
     System.out.println(System.getProperty("java.library.path")); 
     PhidgetTester tester = new PhidgetTester(); 

     while(true) { 
      SensorData acceleration = tester.getAccelerationData(); 
      System.out.println(acceleration); 
     } 
    }  
} 

そして、いくつかのコメントと私のメインクラスのトップ(物事は削除:あなたの助けを事前に

package phidgetTester; 

import com.phidgets.PhidgetException; 
import com.phidgets.SpatialEventData; 
import com.phidgets.SpatialPhidget; 
import com.phidgets.event.* 

public class PhidgetTester { 

public boolean phidgetfunctional = false; 
private final SpatialPhidget sp; 
private volatile SensorData compassData; 
private volatile SensorData accelerationData; 
private volatile SensorData angularData; 

public PhidgetTester() throws PhidgetException { 
    System.out.println("making new phidget"); 
    sp = new SpatialPhidget();     // This is the line it fails on. 
    double[] zerodata = {0,0,0}; 
    this.compassData = new SensorData(zerodata); 

感謝を

+0

あなたが投稿したコードには、どちらもエラーで参照されているmanagerPhidg​​etもfidget_classも表示されないので、あなたが望むヘルプが表示されない場合があります... –

+0

はい...私はそれらがphidgetのどこかに埋め込まれていると仮定しますライブラリは、しかし、いくつかのコードが正常に実行されて以来、私は本当にエラーの意味whtaの情報を探していますか、または他の人が同様のタイプの問題を抱えていて、問題が何であるかを環境的に知っているかもしれない –

答えて

0

を私もあなたと同じ問題を抱えて 私はあなたがCに必要だと思います!。最新のバージョンのphidget21.jarファイルを使用している場合はどうでしょうか。私にとっては、最新のPhidg​​et Control Panelと古い「phidget21.jar」ファイルを同時に使用していたときに問題が発生しました。 これがあなたを助けてくれることを願っています。

+0

ありがとう... phidget.jarの最新バージョンを入手していて、それは私を助けてくれていません。私は、同じコードを実行している2つのシステムがあり、1つはエラーがあり、もう1つはそうではありません。私は、ld_library_pathやそれに類するもののような単純な問題があるように感じるが、それは何か分からない。 –

+0

さて、私は戻ってこれを再試行しました。 phidgetサイトのサンプルコードをそのバージョンのphidget21.jarと共にダウンロードしたところ、動作し始めました。以前はどこかで瓶を手に入れていましたが、私のシステムでは同じバージョンでしたが、それは問題ではないと思いますか?とにかく、これで終わりました。ありがとう! –

0

私の前提は、2番目のシステムのクラスパスに古いバージョンのphidgetライブラリがあるということです。ここでは、Javaがどのように特定のクラスを見つけるかを参照しています:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/findingclasses.html。恐らく、クラスパスに誤ったエントリがないかどうかチェックすることができます。

関連する問題