创建workbook对象一直抛异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建workbook对象一直抛异常相关的知识,希望对你有一定的参考价值。

我在本地可以创建workbook对象
并且可以读取excel文件
代码如下:
try
File xlsFile = new File("D:\\配置管理数据导入模板.xls");
\\System.out.println(xlsFile.getPath());
\\InputStream is=new FileInputStream(xlsFile.getAbsoluteFile());
Workbook book = Workbook.getWorkbook(xlsFile);
System.out.println("11");
Sheet sheet = book.getSheet(0);
System.out.println(sheet.getCell(0, 1).getContents());

catch(Exception e)


上述代码可运行

但是在服务器上运行如下代码时就一直抛异常
异常为:java.lang.reflect.InvocationTargetException

我的目标是从本地上传excel文件,然后将文件导入数据库
在本地编译通过,但是一旦将类文件上传至服务器并导入时
在创建workbook对象时抛出上述异常
若没导入JAR包,本地肯定都无法编译通过的啊。。
至于work 和job 可数不可数纯属扯淡,不懂别掺和

我不明白你说的POI是什么 ,我用的是jxl

我用的是weblogic环境, 我也觉得是没有能够调用到jxl包里面的类
不知道路径如何配置 本地能运行说明本地配置环境正确,
基本可以肯定的是中间件的配置路径错误
另外:两地JDK版本一致,无差别!

请检查以下内容:
1、poi的JAR包是否上传到服务器
2、服务器上以前是否有poi相关的JAR包(或其他JAR包中的class)与现在的POI JAR包冲突? 需要重点检查一下。
参考技术A 你到入jar包没有 参考技术B 因为work是可数名词,而job是不可数名词.

断言被测系统应该抛出一个断言异常

我正在创建一个扩展方法,该方法对对象执行测试以查看它是否具有特定的自定义属性。

我想为我的扩展方法创建一个单元测试。如何断言扩展方法中的测试应该失败?

[Test]
public void ShouldFailIfEmailAttributeMissingFromFieldName()
{
    //--Arrange
    var model = new { Field = 1 };

    //--Act
    model.ShouldValidateTheseFields(new List<FieldValidation>
    {
        new EmailAddressFieldValidation
        {
            ErrorId = 1,
            ErrorMessage = "Message",
            FieldName = nameof(model.Field)
        }
    });
    //--Assert

}

基本上,ShouldValidateTheseFields进行反射并声明它应该在名为“Field”的字段上具有自定义属性,并且我需要断言它失败了。

答案

赶上预期的例外。如果没有抛出则测试失败

[Test]
public void ShouldFailIfEmailAttributeMissingFromFieldName() {
    //--Arrange
    var model = new { Field = 1 };

    //--Act
    try {
        model.ShouldValidateTheseFields(new List<FieldValidation> {
            new EmailAddressFieldValidation {
                ErrorId = 1,
                ErrorMessage = "Message",
                FieldName = nameof(model.Field)
            }
        });
    } catch(MyExpectedException e) {
        return;
    }

    //--Assert
    Assert.Fail();
}

根据所使用的测试框架,应该有一种方法可以断言测试的预期异常,这基本上遵循上面的类似格式。

另一答案

创建一个新的自定义异常,如果它缺少自定义属性,则抛出它:

    [Test]
    public void ShouldFailIfEmailAddressAttributeIsMissingFromFieldName()
    {
        //--Arrange
        var model = new { Field = 1 };

        //--Act
        Should.Throw<EmailAddressAttributeNotFoundException>(() => model.ShouldValidateTheseFields(
            new List<FieldValidation>
            {
                new EmailAddressFieldValidation
                {
                    ErrorId = 1,
                    ErrorMessage = "Message",
                    FieldName = nameof(model.Field)
                }
            }));
    }

要检查断言是否失败,您需要捕获断言异常。在这种情况下,由于正在使用Shouldly Framework,因此在扩展方法中抛出了一个Shouldly.ShouldAssertException:

[Test]
public void ShouldFailIfEmailAddressAttributeHasWrongErrorId()
{

    //--Arrange
    var model = new TestModelTwo();

    //--Act
    Should.Throw<ShouldAssertException>(() => model.ShouldValidateTheseFields(
    new List<FieldValidation>
    {
        new EmailAddressFieldValidation
        {
            ErrorId = 2,
            ErrorMessage = "Message",
            FieldName = nameof(model.Field)
        }
    }));
}

使用课程:

public class TestModel
{
    [EmailAddress(1)]
    public string Field { get; set; }
}

扩展方法中的失败断言是ErrorId.ShouldBe(2),当它在模型上实际为1时。

以上是关于创建workbook对象一直抛异常的主要内容,如果未能解决你的问题,请参考以下文章

读/写xlsx文件

创建workbook及相关操作

VBA编程13.Workbook对象的事件

我用jxl读取excel,获得workbook和sheet时出现异常,请求帮忙!

对象'_Workbook'的方法'SaveAs'失败VBA

Workbooks对象集