我必须从excel文件中读取数据并在我的应用程序中显示数据。
我想打包我的excel文件(数据文件)和可执行jar。我在主项目文件夹中创建了一个源文件夹
并命名为' res
'。在' res
'内,我有2个子文件夹(普通文件夹),名为" images
"和" data
"。在我的数据文件夹里面
放置了excel文件。
我的项目结构
构建路径
导出为JAR
问题:
当我从Eclipse运行应用程序时,应用程序运行完美,但当我将其作为jar导出时,应用程序无法正常工作。它能够找到图像但无法找到excel文件。
换句话说,当我从eclipse(右键单击 - > Run As - > Java Application)运行应用程序时,它运行得很好。但是当启动导出的JAR文件(" Tool.jar")时,它无法读取excel数据。
阅读Excel的代码
URL excelResources = getClass().getResource("/excel/data.xls");
File excel = new File(excelResources.toURI());
FileInputStream fis = new FileInputStream(excel);
答案 0 :(得分: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();
}
答案 1 :(得分:-1)
使用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>