在可执行的 .jar 文件中包含 excel
Posted
技术标签:
【中文标题】在可执行的 .jar 文件中包含 excel【英文标题】:Include excel in executable .jar file 【发布时间】:2015-03-30 05:42:14 【问题描述】:我必须从 excel 文件中读取数据并在我的应用程序中显示数据。
我想将我的 excel 文件(数据文件)与可执行 jar 一起打包。我在我的主项目文件夹中创建了一个源文件夹
并将其命名为“res
”。在“res
”内,我有 2 个子文件夹(普通文件夹),分别称为“images
”和“data
”。在我拥有的数据文件夹内
放置excel文件。
我的项目结构
构建路径
导出为 JAR
问题:
当我从 Eclipse 运行该应用程序时,它可以完美运行,但是当我将其导出为 jar 时,该应用程序无法运行。它能够找到图像但无法找到 excel 文件。
换句话说,当我从 Eclipse 内部运行应用程序(右键单击 -> 运行方式 -> Java 应用程序)时,它运行良好。但是当启动导出的 JAR 文件(“Tool.jar”)时,它无法读取 excel 数据。
读取 Excel 的代码
URL excelResources = getClass().getResource("/excel/data.xls");
File excel = new File(excelResources.toURI());
FileInputStream fis = new FileInputStream(excel);
【问题讨论】:
getClass().getResource("/res/data/MyAwesome.xls")
会给你一个URL
到你的 Excel 文件; getClass().getResourceAsStream("/res/data/MyAwesome.xls")
将向您的 Excel 文件返回一个 InputStream
...
您能否添加有关您访问图像和 Excel 的方式的详细信息?如果你有任何错误
为了尽快获得更好的帮助,请发布MCVE(最小完整可验证示例)或SSCCE(简短、自包含、正确示例)。
***.com/a/25636097/2587435
@peeskillet :- 感谢您将我指向此链接。我尝试了它们,但未能解决我的问题。问题出在导出的 .jar 文件上。它能够找到图像,但无法加载 excel 文件。请帮忙。
【参考方案1】:
这...
URL excelResources = getClass().getResource("/excel/data.xls");
File excel = new File(excelResources.toURI());
FileInputStream fis = new FileInputStream(excel);
不是嵌入式资源的工作方式。您不能再像访问文件系统上的文件一样访问 excel 文件,因为它不是,它嵌入在 Jar 文件中。
如果您需要 InputStream,请使用 Class#getResourceAsStream
try (InputStream is = getClass().getResourceAsStream("/excel/data.xls"))
//...
catch (IOException exp)
exp.printStackTrace();
【讨论】:
【参考方案2】:使用maven可以通过插件来完成:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>your.class.Name</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<resources>
<resource>
<directory>$basedir/src/main/res/data</directory>
<filtering>false</filtering>
</resource>
</resources>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
【讨论】:
以上是关于在可执行的 .jar 文件中包含 excel的主要内容,如果未能解决你的问题,请参考以下文章