1

我想做 Cytoscape 简单的应用程序(它就像一个插件程序)。

所以我应该制作一个.jar文件,并将其安装在 Cytoscape 程序中。

我的问题如下:

我给你看2个案例。

有 6 个类(A、B、C、D、E、F)和 2 个 .jar 文件(代表其他 API)

A(CytoscapeLeapMotionApp)是主类(实际上它不包括main方法,但它是安装App时运行的第一个类)。

C,E 是我制作的课程。

B、D 在 1.jar 中。

F(Listener) 在 2.jar(leap) 中。

  • 情况1

    A 扩展 B

    C 实例在 A 创建

    C 扩展 D

    E 实例在 C 创建

    E 扩展 F

结果:

Caused by: java.lang.NoClassDefFoundError: com/leapmotion/leap/Listener     at
CytoscapeLeapMotionApp.<init>(CytoscapeLeapMotionApp.java:9)    ... 21
more

Caused by: java.lang.ClassNotFoundException:
com.leapmotion.leap.Listener    at
java.net.URLClassLoader$1.run(URLClassLoader.java:202)  at
java.security.AccessController.doPrivileged(Native Method)  at
java.net.URLClassLoader.findClass(URLClassLoader.java:190)  at
java.lang.ClassLoader.loadClass(ClassLoader.java:306)   at
java.lang.ClassLoader.loadClass(ClassLoader.java:247)   ... 22 more
  • 案例2

    A 扩展 B

    C 实例在 A 创建

    C 扩展 D

    F实例在C创建

结果:

很好,没有错误!

以下是 E 扩展 F

public final class SampleListener extends Listener {
    //nothing
}
4

1 回答 1

0

这个错误

引起:java.lang.NoClassDefFoundError: com/leapmotion/leap/Listener at CytoscapeLeapMotionApp.(CytoscapeLeapMotionApp.java:9) ... 21 更多

表明当 CytoscapeLeapMotionApp 运行时,类型com.leapmotion.leap.Listener不在类路径上。

您已指出此类型位于名为2.jar的 jar 文件中,因此需要在重试之前将其添加到类路径中。

于 2014-07-21T08:34:00.120 回答