- PR -

NoClassDefFoundErrorについて

1
投稿者投稿内容
しん
常連さん
会議室デビュー日: 2004/04/04
投稿数: 48
投稿日時: 2008-10-02 23:23
Eclipse起動時にエクセルファイルのデータを読み込むプラグインプロジェクトを作成しようとして、
拡張ポイントに org.eclipse.ui.startupを追加して作成したクラスのearlyStartup()
内に下記のようなサンプルコードを書きました。
Eclipse上で
プラグインプロジェクトを右クリック → 実行 → Eclipseアプリケーション
と行ったところ
コンソールに最初の処理である"処理Start"の文字すら現れずログを見ると
以下のようなエラーが出力されていました。
Eclipseのエディタ上では jxl/read/biff/BiffException
は認識されていてエラーなど出ていないのですがプラグインを実行すると
java.lang.NoClassDefFoundError が出てしまいます。
何か考えられることはありますでしょうか。

-----------Error Log----------------------------------
!ENTRY org.eclipse.ui 4 4 2008-10-02 20:32:16.500
!MESSAGE Unhandled event loop exception

!ENTRY org.eclipse.ui.workbench 4 2 2008-10-02 20:32:16.578
!MESSAGE プラグイン "org.eclipse.ui.workbench" からのコードの起動で問題が発生しました。
!STACK 0
java.lang.NoClassDefFoundError: jxl/read/biff/BiffException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:157)
at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:759)
at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:51)
at org.eclipse.ui.internal.WorkbenchPlugin$1.run(WorkbenchPlugin.java:242)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:49)
at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:238)
at org.eclipse.ui.internal.EarlyStartupRunnable.getExecutableExtension(EarlyStartupRunnable.java:117)
at org.eclipse.ui.internal.EarlyStartupRunnable.run(EarlyStartupRunnable.java:66)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.ui.internal.Workbench$20.run(Workbench.java:1759)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)

------------サンプル クラス-------------------------
コード:
import java.io.File;
import java.io.IOException;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.read.biff.BiffException;

import org.eclipse.ui.IStartup;

public class ExcelImporter implements IStartup {

  public void earlyStartup() {
   System.out.println("処理Start");
 
    Workbook workbook = null;
   Cell cellcontents;
 
     try {
        WorkbookSettings settings = new WorkbookSettings();
         // System.gc()「ガベージコレクション」の実行をOFFに設定
         settings.setGCDisabled(true);
         workbook = Workbook.getWorkbook(new File("c:\\ExcelData.xls"),settings);
     } catch (BiffException ex) {
         System.err.println("予期せぬ例外.指定のExcelブック読込に失敗しました.データ形式が不正です.:" + ex.toString());
         return;
     } catch (IOException ex) {
         System.err.println("予期せぬ例外.指定のExcelブック読込に失敗しました.:" + ex.toString());
         return;
     }
     
     try {
         System.out.println("Excelシートを読み込みます.");
         Sheet sheet = workbook.getSheet("Sheet1");
         if (sheet == null) {
         System.err.println("予期せぬ例外.指定のExcelシート読込に失敗しました.");
          return;
      }
         System.out.println("A列1行を読み込みます.");
         cellcontents = sheet.getCell(0, 0);
         System.out.println("A列1行の内容は [" + cellcontents.getContents() + "] です.");
         System.out.println("新規作成したExcelブックのファイル読み込みに成功しました.");
     } finally {
         workbook.close();
     }
  }
}



※ エクセルファイルよりデータを読み込む処理は下記URLよりJExcelAPIをダウンロードして
  行っています。
http://sourceforge.net/project/showfiles.php?group_id=79926&package_id=81471&release_id=603841
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-10-03 09:35
プラグインは分かりませんが、Eclipseのビルドパスは基本Eclipseでコンパイルする際に参照されるものなので、そのプラグイン実行時には別途classpathを与えてやらねばならないのではないでしょうか。
1

スキルアップ/キャリアアップ(JOB@IT)