在我的项目中,我使用apache.poi libs来处理excel文件。我有依赖:
罐子。所以在编译期间没有问题。 在运行时:
image: alpine:3.4
before_script:
- apk update && apk add openssl
- wget https://github.com/spf13/hugo/releases/download/v0.16/hugo_0.16_linux-64bit.tgz
- echo "37ee91ab3469afbf7602a091d466dfa5 hugo_0.16_linux-64bit.tgz" | md5sum -c
- tar xf hugo_0.16_linux-64bit.tgz && cp ./hugo /usr/bin
- hugo version
test:
script:
- hugo
except:
- master
pages:
script:
- hugo -t strange-case -v
artifacts:
paths:
- public
only:
- master
第1行正常工作,第2行引发异常:
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
...
Workbook workbook2003 = new HSSFWorkbook(); //1
Workbook workbook2007 = new XSSFWorkbook(); //2
Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.Workbook cannot be found by org.apache.poi.ooxml_3.15.0
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:461)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 41 more
位于org.apache.poi.ss.usermodel.Workbook
,但在运行时,jvm会尝试在apache.poi_3.15
中找到它。不确定为什么?
也许有人可以帮我解决这个问题。
有关项目的更多细节: - Ide:eclipse neon.1 | - 这是e4项目 - java 8
答案 0 :(得分:2)
由于XSSFWorkbook
适用于OOXML架构,因此它会从Workbook
jar加载poi.ooxml
类。您可能会收到此错误,因为xmlbeams
jar在运行时也需要作为依赖项。
<强>更新强>
commons-logging
还需要 commons-codec
,commons-collections
,log4j
,poi
个罐子。请检查您是否已导入它们。所有这些jars
都已存在于您可能已下载的poi-bin-3.15-20160924
文件中。有关各种组件的先决条件,请参阅this page。
希望这会有所帮助!!
答案 1 :(得分:0)
该库可能具有第二种情况所需的其他运行时依赖性。您可以尝试将项目设置为maven项目吗?它应该解决您的问题,因为maven也会关注您明确定义的库的依赖关系。