我创建了一个虚拟Maven项目,它将CMU Sphinx4包装在一个servlet中。依赖项为sphinx4-core:1.0-SNAPSHOT
和sphinx4-data:1.0-SNAPSHOT
。在本地运行时(Eclipse),它运行良好,但随后我将其部署到AWS Elastic Beanstalk,我得到以下异常:
Property exception component:'null' property:'null' - java.io.FileNotFoundException: JAR entry edu/cmu/sphinx/models/en-us/en-us//means not found in /var/lib/tomcat8/webapps/ROOT/WEB-INF/lib/sphinx4-data-1.0-SNAPSHOT.jar
edu.cmu.sphinx.util.props.PropertyException: java.io.FileNotFoundException: JAR entry edu/cmu/sphinx/models/en-us/en-us//means not found in /var/lib/tomcat8/webapps/ROOT/WEB-INF/lib/sphinx4-data-1.0-SNAPSHOT.jar
Caused by: java.io.FileNotFoundException: JAR entry edu/cmu/sphinx/models/en-us/en-us//means not found in /var/lib/tomcat8/webapps/ROOT/WEB-INF/lib/sphinx4-data-1.0-SNAPSHOT.jar
我怀疑那里有双重斜线,但我无法解释为什么它在我的开发机器(OSX)上没有发生。
谢谢!
编辑:
我的开发机器:运行带有AWS插件的Eclipse Luna的OSX。我正在使用一个带有单个servlet的J2EE项目,并通过Maven获取Sphinx JAR(核心和数据)。当我在我的开发机器(端口8080)中运行服务器时,我通过POST消息将其提供给WAV文件,文件正确加载,我将分析作为文本响应。
我的产品机器:AWS Elastic Beanstalk。我使用AWS插件进行部署。当我注释掉代码的Sphinx部分时,服务器工作(即获取文件,并将其返回给我,等等)
如果问题不是双斜线,那么JAR没有正确烹饪。这是有道理的,因为它所寻找的文件不是class
所以应该告诉Maven的JAR烹饪部分如何在它部署时在JAR中包含资源文件。
知道怎么做吗?
再次感谢!
答案 0 :(得分:1)
在某些JVM上,双斜杠似乎是一个问题,在其他JVM上运行。
我刚刚提交了更新以避免双斜线。请更新sphinx4并重试。
答案 1 :(得分:0)
原来问题是我在Java 7上开发(OSX)并将AWS部署到Tomcat / Java 8.一旦我部署到Tomcat / Java 7,一切都按预期工作。