2016-07-27 22 views
1

我正在用Maven构建我的Java项目,并且我有一个脚本文件,最终在target/classes/resources文件夹中。虽然我可以通过this.getClass.getResource("/lookUpScript.py").getPath()访问文件本身,但是我无法使用"." + this.getClass.getResource("/lookUpScript.py").getPath()执行shell命令;这最终结果是./lookUpScript.py。要执行shell命令,我使用的是我公司代码的一部分,我可以使用任何不涉及文件的命令正常工作。有没有一种标准的访问位于Maven构建资源区域的文件的方法可以解决这个问题?用Java构建Maven:如何执行位于资源中的脚本?

+0

脚本是否可执行?它是否以'#!/ usr/bin/python'开头?是否有打印错误或者什么都不发生? –

+0

是的,它是可执行的,我可以在程序外自己执行它。当我将我的应用程序部署到公司服务器时,出现与脚本文件相关的错误未找到 – SVN600

+0

尝试使用'this.getClass()。getClassLoader()。getResource(“/ lookUpScript.py”)。getPath()' If这不起作用,请尝试查看在服务器上运行时生成的路径。 –

回答

1

所有工件的maven路径与运行或导出项目时生成的maven路径不同。您可以通过将项目导出为Jar/War/Ear文件并通过winRAR或任何其他工具查看它来检查。

如果资源是jar项目,资源应该与jar目录并行,但是您可以仔细检查它。

+0

我喜欢添加这个不是真的maven具体。类路径中的资源不是文件。如果你想运行phyton脚本,它的解释器需要能够读取文件,但它是在一个jar文件中。一个人需要首先将它从jar复制到一个目录中,然后从那里执行它或将它打包到classes或resources文件夹之外 - 如果在webapp/WEB-INF的某处创建一个war文件。 – wemu