1

Cytoscapeのシンプルなアプリ(プラグインのようなもの)を作りたいです。

なので、.jarファイルを作ってCytoscape Programにインストールする必要があります。

私の問題は次のとおりです。

2ケース紹介します。

6 つのクラス (A、B、C、D、E、F) と 2 つの .jar ファイル (他の API を表す) があります。

(CytoscapeLeapMotionApp) がメイン クラスです (実際にはメイン メソッドは含まれていませんが、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 に答える