Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打开包含在JAR文件中的PowerPoint文件_Java_Resources - Fatal编程技术网

Java 打开包含在JAR文件中的PowerPoint文件

Java 打开包含在JAR文件中的PowerPoint文件,java,resources,Java,Resources,我的一个资源文件是PowerPoint演示文稿,我想用PowerPoint打开演示文稿。如果我在Eclipse中运行代码,一切正常,但是如果我使用java-jar jarname.jar运行可执行文件.jar,PowerPoint会说它无法读取该文件 可以读取打包的资源文件吗?或者只有执行jar才能读取这些文件?如果是这样,你会怎么做?是否将文件写入临时文件夹 在eclipse中运行时显示的绝对路径: C:\Users\RPR\workspace\CommandLineExecuter\bin\

我的一个资源文件是PowerPoint演示文稿,我想用PowerPoint打开演示文稿。如果我在Eclipse中运行代码,一切正常,但是如果我使用
java-jar jarname.jar
运行可执行文件.jar,PowerPoint会说它无法读取该文件

可以读取打包的资源文件吗?或者只有执行jar才能读取这些文件?如果是这样,你会怎么做?是否将文件写入临时文件夹

在eclipse中运行时显示的绝对路径:

C:\Users\RPR\workspace\CommandLineExecuter\bin\blaa.pptx

运行可执行jar时显示的绝对路径:

C:\Users\RPR\workspace\CommandLineExecuter\file:\C:\Users\RPR\workspace\CommandLineExecuter\CommandLineExecuter.jar\blaa.pptx

即使我硬编码了
C:\Users\RPR\workspace\CommandLineExecuter\CommandLineExecuter.jar的路径,PowerPoint也无法读取文件\blaa.pptx

加载资源的代码:

File presentation = new File(CommandLineExecuter.class.getResource(
        "/blaa.pptx").getFile());

ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c",
        "cd & \"C:\\Program Files\\Microsoft Office\\Office15\\POWERPNT.exe\ "
                + presentation.getAbsolutePath());
如果使用,则可以从JAR中提取文件,并将其放置在PowerPoint可以访问的位置

例如,和用于将数据复制到指向临时文件的
FileOutputStream


最后,将此临时文件路径传递给PowerPoint。

向我们显示加载此资源的代码。我已添加了此代码。getResource()。getFile()的作用与您认为的不同。操作系统不知道如何寻址到jar文件中。为了简单地打开一个文档,让操作系统来处理它。看看Desktop.open()方法,问题是我必须通过命令行打开它,因为我必须向PowerPoint添加一些参数。我运行(“C:\Program Files\Microsoft Office\Office15\POWERPNT.exe”/M“blaa.pptx”“CreateVideo720p”)自动启动makro。当您在Eclipse中运行时,您的类路径指向您的bin/文件夹,因此文件系统上确实存在该文件,PP可以解析它。一旦打包到JAR中,它就不再解析为文件系统上的单个文件。如果您想将其与JAR打包,您需要将资源写入一个tmp文件,以便在PP中打开它,或者找到另一个解决方案。Okai,谢谢。因此,我必须创建一个临时文件,并且除了我的jar之外,无法从其他程序访问资源文件?PowerPoint肯定无法打开jar中的文件。