首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:严重错误-无法在Phidget项目中获取类的字段

Java:严重错误-无法在Phidget项目中获取类的字段
EN

Stack Overflow用户
提问于 2012-03-21 02:35:52
回答 2查看 522关注 0票数 0

我正在做一个使用phidget加速计(phidgets.com)的java项目,我得到了这个错误

代码语言:javascript
复制
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)而不是在另一台计算机上时,我得到了这个错误。也就是说,在我的dev系统上,我可以很好地构建和运行程序,但在我想要实际使用的系统上,我得到了上面的错误。对可能导致问题的原因有何建议?这只是一个类路径问题(这会让我感到惊讶),还是更险恶的东西?

要安装该程序,我只需复制由netbeans生成的“dist”文件夹-它包含我的程序的.jar,而在/lib文件夹中是在开发机器上使用phidget驱动程序所必需的phidget21.jar文件。

我已经运行了一个python测试脚本,它能够读取phidget上的数据,所以我认为本地库没有问题,问题完全是基于java的,但我不知道在这样一个小而简单的程序中,哪里会出现与外部环境相关的错误。

下面是我的main方法(添加了库路径,只是为了检查一下,但它们在两台机器上看起来基本上是一样的):

代码语言:javascript
复制
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);
        }
    }    
}

和我的主类的顶部(删除了一些注释和内容:

代码语言:javascript
复制
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);

提前感谢您的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-23 00:31:17

我和你的也有同样的问题。我认为您需要检查您是否使用了最新版本的"phidget21.jar“文件。对我来说,当我同时使用最新的Phidget控制面板和旧的"phidget21.jar“文件时,出现了这个问题。希望这能对你有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2012-03-29 05:42:27

我的假设是,在第二个系统的类路径中有一个旧版本的phidget库。下面是关于Java如何找到特定类的参考:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/findingclasses.html。也许您可以检查类路径中是否有错误的条目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9792859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档