我正在做一个使用phidget加速计(phidgets.com)的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)而不是在另一台计算机上时,我得到了这个错误。也就是说,在我的dev系统上,我可以很好地构建和运行程序,但在我想要实际使用的系统上,我得到了上面的错误。对可能导致问题的原因有何建议?这只是一个类路径问题(这会让我感到惊讶),还是更险恶的东西?
要安装该程序,我只需复制由netbeans生成的“dist”文件夹-它包含我的程序的.jar,而在/lib文件夹中是在开发机器上使用phidget驱动程序所必需的phidget21.jar文件。
我已经运行了一个python测试脚本,它能够读取phidget上的数据,所以我认为本地库没有问题,问题完全是基于java的,但我不知道在这样一个小而简单的程序中,哪里会出现与外部环境相关的错误。
下面是我的main方法(添加了库路径,只是为了检查一下,但它们在两台机器上看起来基本上是一样的):
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);提前感谢您的帮助!
发布于 2012-03-23 00:31:17
我和你的也有同样的问题。我认为您需要检查您是否使用了最新版本的"phidget21.jar“文件。对我来说,当我同时使用最新的Phidget控制面板和旧的"phidget21.jar“文件时,出现了这个问题。希望这能对你有所帮助。
发布于 2012-03-29 05:42:27
我的假设是,在第二个系统的类路径中有一个旧版本的phidget库。下面是关于Java如何找到特定类的参考:http://docs.oracle.com/javase/1.5.0/docs/tooldocs/findingclasses.html。也许您可以检查类路径中是否有错误的条目。
https://stackoverflow.com/questions/9792859
复制相似问题