Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.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
Maven用Java构建:如何执行位于参考资料中的脚本?_Java_Python_Shell_Maven - Fatal编程技术网

Maven用Java构建:如何执行位于参考资料中的脚本?

Maven用Java构建:如何执行位于参考资料中的脚本?,java,python,shell,maven,Java,Python,Shell,Maven,我正在用Maven构建我的Java项目,我有一个脚本文件,它最终位于target/classes/resources文件夹中。虽然我可以通过this.getClass.getResource(“/lookUpScript.py”).getPath(),访问文件本身,但我无法使用“+this.getClass.getResource(“/lookUpScript.py”).getPath()”,执行shell命令;这最终是/lookUpScript.py。为了执行shell命令,我使用的方法是我公

我正在用Maven构建我的Java项目,我有一个脚本文件,它最终位于
target/classes/resources
文件夹中。虽然我可以通过
this.getClass.getResource(“/lookUpScript.py”).getPath()
,访问文件本身,但我无法使用
“+this.getClass.getResource(“/lookUpScript.py”).getPath()
”,执行shell命令;这最终是
/lookUpScript.py
。为了执行shell命令,我使用的方法是我公司代码的一部分,我可以很好地处理任何不涉及文件的命令。有没有一种标准的方法可以访问Maven构建的资源区中的文件来解决这个问题

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


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

脚本是否可执行?它的标题是
#!/usr/bin/python
?是否有打印的错误或什么也没有发生?是的,它是可执行的,我可以在程序之外自己执行。当我将应用程序部署到公司服务器时,我会收到与未找到的脚本文件相关的错误尝试
this.getClass().getClassLoader().getResource(“/lookUpScript.py”).getPath()
,如果这不起作用,尝试查看在服务器上运行时生成的路径。实际上,您无法以
文件或
路径的形式访问JAR文件中的资源。这是行不通的。您必须做的是在文件
getClass().getResourceAsStream(…)
中有一个
InputStream
,将其复制到一个临时文件(
Files.createTempFile
and)并执行该临时文件。我想补充的是,这并不是真正特定于maven的。类路径中的资源不是文件。如果您想运行phyton脚本,它的解释器需要能够读取文件,但它在jar中。如果只是在webapp/WEB-INF中的某个地方创建一个war文件,则需要首先将其从jar复制到一个目录中,然后从那里执行,或者将其打包到classes或resources文件夹之外。