2017-06-06 47 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