JXL 版本 = 2.6.12
JBEHAVE 版本:3.6.8
优秀:MS EXCEL 2007
我正在从下面的类路径中读取我的 Jbehave 步骤类中的 excel 并获取 ArrayIndexOutOfBoundsException。相同的代码在独立的 java 代码中工作
工作簿工作簿 = null; InputStream 流 =this.getClass().getClassLoader().getResourceAsStream("test.xls"); 工作簿 = Workbook.getWorkbook(stream); Sheet sheet = workbook.getSheet(0); 单元格 a1 = sheet.getCell(0,0);
但是,如果我使用文件系统路径在 Jbehave 项目中读取 excel,我可以在 excel 中加载和读取工作表中的内容
工作簿 = Workbook.getWorkbook(new File("test.xls"));
下面是堆栈跟踪:
java.lang.ArrayIndexOutOfBoundsException: 39181 在 jxl.read.biff.Record.(Record.java:79) 在 jxl.read.biff.File.next(File.java:181) 在 jxl.read.biff.WorkbookParser.parse (WorkbookParser.java:569) 在 jxl.Workbook.getWorkbook(Workbook.java:271) 在 jxl.Workbook.getWorkbook(Workbook.java:253) 在 org.teststepgiven.steps.Test.test(Test.java:33)在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method .invoke(Method.java:597) 在 org.jbehave.core.steps.StepCreator$ParameterisedStep.perform(StepCreator.java:537) 在 org.jbehave.core.embedder。StoryRunner$FineSoFar.run(StoryRunner.java:477) at org.jbehave.core.embedder.StoryRunner.runStepsWhileKeepingState(StoryRunner.java:457) at org.jbehave.core.embedder.StoryRunner.runScenarioSteps(StoryRunner.java:421)在 org.jbehave.core.embedder.StoryRunner.runCancellable(StoryRunner.java:297) 在 org.jbehave.core.embedder.StoryRunner.run(StoryRunner.java:211) 在 org.jbehave.core.embedder.StoryRunner.run (StoryRunner.java:172) 在 org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:229) 在 org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:201) 在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 在 java.util.concurrent。ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 在 java.lang.Thread.run(Thread.java:662)