2017-09-01 81 views
-3

我一直工作在一个Java程序的公司在今年夏天的Java程序,并已接近尾声。作为一名新手程序员,我从来没有制作过使用我创建的文件在其他系统上使用的程序。我的程序使用Apache Poi读取和写入Excel,目前使用的Excel文件位于程序指定的特定目录中。该程序还使用了一些位于代码指定的目录中的图像。生产用于其它系统

我怎么可能让其他系统上这个程序可运行?当程序“安装”在另一个系统上时,程序是否可以创建一个Excel文档?

目前我使用Eclipse和系统是Windows 7的

+2

为什么安装时需要创建Excel文档?如果您希望它在其他系统上正常工作,请不要硬编码路径。使它们可配置或让用户在生成时选择它。 – Kayaman

+0

正如我所说我是Java新手,我在问我如何使它在其他系统上工作。 –

+1

尝试在另一个系统上运行它,并解决出现的每个问题。 –

回答

0

您可以打包在一个.jar您的应用程序,其实里面的.class文件zip文件并资源文件。这些资源文件,如图像,可以用getClass().getResource("path/x.png")getResourceAsStream拍摄。路径可以是包相对或绝对的:“/abc/def.jpg”。

这些资源必须是只读的(因为它们是该.jar内)。但是,您可以将Excel 模板存储为资源,并将其复制到用户的目录。

System.getProperty("user.home") 

将提供用户的目录,您可以将资源复制到。

Path appWorkspace = Paths.get(System.getProperty("user.home"), "myapp"); 
Files.createDirectories(appWorkspace); 
Path xlsx = appWorkspace.resolve("untitled.xlsx"); 
Files.copy(getClass().getResourceAsStream("/data/empty.xlsx"), 
    xlsx); 
+0

谢谢,这似乎像什么,我正在寻找,但我唯一担心的是被覆盖的Excel文件,但我认为我可以只检查文件是否存在绕开这个问题。 –

+0

'Files.copy'(以及其他功能)具有'StandardCopyOption.REPLACE_EXISTING'和这样的可变参数的参数。 –

+0

试过测试这段代码,但我在路径xlsx行上得到一个空指针异常,应该在我的项目中有一个名为data的文件夹?此外,untitled.xlsx似乎并未出现在myapp中。 –