1

外部の .class ファイルを Eclipse プロジェクトにインポートする際に問題が発生しています。関連する質問のほとんどを読みましたが、それらの答えはどれもうまくいきませんでした。私のプロジェクトの次のコードは次のとおりです。

import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;
import timing.Timing;

public class Test {
    public static void main(String[] args){
        int seed = 518406;
        long begin = 0;
        long end = 0;
        ThreadMXBean bean = ManagementFactory.getThreadMXBean();

        for(int i = 1; i < 10000; i=i*2){
            begin = bean.getCurrentThreadCpuTime();
            Timing.trial(i, seed);
            end = bean.getCurrentThreadCpuTime();
            System.out.println(i + ": " + (end - begin) + "ns");
        }
    }

}

Timing.class ファイルを /lib/timing/Timing.class に配置してインポートし、lib フォルダーをクラス フォルダーとしてビルド パスに追加しました。ビルド パス ウィンドウの [注文とエクスポート] タブで、lib フォルダーを一番上に移動し、チェックを入れました。

上記のコードを実行すると、次の例外が発生します。

Exception in thread "main" java.lang.NoClassDefFoundError: Timing
        at Test.main(Test.java:14)
Caused by: java.lang.ClassNotFoundException: Timing
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 1 more

何が問題なのかを理解するのを手伝ってくれる人はいますか?

4

2 に答える 2

2
  1. スタックトレースでは、この行は奇妙に見えます

    スレッド「メイン」の例外 java.lang.NoClassDefFoundError: タイミング

Timingパッケージ内ではなく、デフォルトパッケージ内のJava検索のようですtiming。この瞬間をチェックしてください。

2 このコードをどのように実行しますか? エクリプスから?その場合は、この起動の Eclipse 実行構成を確認してください。クラスフォルダーをビルドパスに追加しても、起動クラスパスを追加しないでください。

于 2012-08-18T19:29:43.813 に答える
1

サードパーティからファイルを取得している.classか、ソースを含めていると思います。おそらく、これに対処する最も簡単な方法は、JAR にラップして提供するか、自分でパッケージ化するように依頼することです。Java 開発ツールは、生のクラス ファイルではなく、JAR を処理するようにほぼ普遍的に設計されています。

于 2012-08-18T19:31:10.923 に答える