2017-06-06 61 views
1

在我的项目,我需要使用libav转换视频和音频。所以我需要在我的项目中包含libav工具。 这是我的项目结构:Grails的战争中找不到Java类文件

grails-project 
| 
|-- .classpath 
|-- .groovy 
|-- .project 
|-- .settings 
|-- application.properties 
|-- grails-app 
|-- lib 
| |-- avconv -->>> `This is the folder which contains libav tools` 
|-- scripts 
|-- src 
| |-- groovy 
| |-- java 
| | |-- Converter.class -->>> `This is my converter class` 
|-- target 
|-- test 
|-- web-app 

而且我用Java接口libav这是avconv4java。 它运行过程以执行libav命令和我这样设置libav路径:

它里面经过的路径作为参数来的ProcessBuilder Java界面和它开始它等

在开发环境运行良好。然而,当我部署战争和尝试转换视频我得到了以下错误:

java.io.IOException: Cannot run program "lib/avconv/bin/avconv.exe": CreateProcess error=2, The system cannot find the file specified 

我看着我的部署结构,并发现avconv文件夹不是lib文件夹中。所以我说这行BuildConfig

grails.war.resources = { stagingDir, args -> 
    copy(todir: "${stagingDir}/WEB-INF/lib/avconv") { 
     fileset(dir: "lib/avconv", includes:"**") 
    } 
} 

现在avconv是在lib文件夹式的发展环境 - 但是,我还是得到同样的错误。我应该怎么做才能使它工作?

任何帮助表示赞赏。 在此先感谢。

GRAILS VERSION:2.4.5 中的IntelliJ 部署到Tomcat 7发展

回答

0

相对路径将有望从Tomcat文件夹的根目录开始。假设有问题的文件在您的类路径中,您可以拨打getResource来访问它并将绝对路径传递给AVCommand

+0

谢谢你的回答。我通过提供绝对路径来解决它,所以我将接受这个答案作为未来的回应:)我希望你早些回答:))) – ayZagen