0

Excelシートを作成するクラスが1つあります。そのために、poi-3.2.jarをクラスパスに追加しました。私はEclipse3.7で作業しています。
WindowTester Pro を使用してワークベンチ アクションを記録することにより、テストケースを生成しました。生成されたテストケースを編集し、その中にExcelシートを作成して、テスト結果を書き込んでみました。

通常のJavaプログラム(そのプラグイン自体内)から同じAPIを使用すると、エラーなしでExcelファイルを作成できます。しかし、テストケースから作成しようとすると、次のエラーが発生します。

java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFWorkbook

必要な jar ファイルを lib フォルダーに追加し、build-path に追加しました。通常の Java プログラムからは機能するのに、WindowTester で生成されたテストケースからは機能しないのはなぜですか。

これが私のコードです:

import com.windowtester.runtime.IUIContext;
import com.windowtester.runtime.swt.UITestCaseSWT;
import com.windowtester.runtime.swt.locator.eclipse.WorkbenchLocator;

public class Configuration extends UITestCaseSWT {

/*
 * @see junit.framework.TestCase#setUp()
 */
protected void setUp() throws Exception {
    super.setUp();
    IUIContext ui = getUI();
    try {
        CreateExcelFile file = new CreateExcelFile();
        file.CreateExcel();
    } catch (Throwable e) {
        System.out.println("***** Exception catched.. *****");
        // fail("Configuration failed");
        e.printStackTrace();
    }
    ui.ensureThat(new WorkbenchLocator().hasFocus());
}

/**
 * Main test method.
 */
public void testConfiguration() throws Exception {

    //Test code
    }

@Override
protected void tearDown() throws Exception {
    super.tearDown();
    // ....
}

}


public class CreateExcelFile {
HSSFRow row;
HSSFRichTextString string;

public void CreateExcel() {
    try {
        String filename = "E:/hello.xls";
        HSSFWorkbook hwb = new HSSFWorkbook();
        HSSFSheet sheet = hwb.createSheet("new sheet");

        HSSFRow rowhead = sheet.createRow((short) 0);
        string = new HSSFRichTextString("TC_Name");
        rowhead.createCell((int) 0).setCellValue(string);
        string = new HSSFRichTextString("Result");
        rowhead.createCell((int) 1).setCellValue(string);

        for (int i = 0; i <= 10; i++) {
            row = sheet.createRow((short) i);
            string = new HSSFRichTextString("TC_Name" + i);
            row.createCell((int) 0).setCellValue(string);
            if (i % 2 == 0) {
                row.createCell((int) 1).setCellValue(true);
            } else {
                row.createCell((int) 1).setCellValue(false);
            }
        }
        FileOutputStream fileOut = new FileOutputStream(filename);
        hwb.write(fileOut);

        fileOut.close();
        System.out.println("Your excel file has been generated!");
    } catch (Exception ex) {
        System.out.println(ex);
    }
}

}

誰でも私を助けることができますか?

4

1 に答える 1

0

問題の原因がわかりました。実行時のクラスパスが原因です。私が見つけた解決策は、マニフェスト エディターで MANIFEST.MF を開くことです。次に、[実行時] タブの [クラスパス] セクションで、必要な JAR を追加しました。
エラーなしで動作するようになりました。

于 2012-09-18T04:28:05.523 に答える