如何加载'ParserModel'以及在我的Web应用程序中放置“en-parser-chunking.bin”文件的位置?

时间:2017-06-08 07:36:31

标签: java eclipse servlets inputstream opennlp

我在运行java web应用程序时遇到错误。我有一个servlet类和一个用于Apache openNLP文本分析的类。当我运行我的代码(将我的表单数据提交给servlet)时,我在浏览器中得到以下错误代码

Error in my Browser

此外,它还显示了eclipse控制台中的异常详细信息。

enter image description here

下面是我的项目结构,我已将“en-parser-chunking.bin”文件放在突出显示的区域中。

Project structure

有没有更好的方法来放置我的“en-parser-chunking.bin”文件?

1 个答案:

答案 0 :(得分:2)

第一个部分答案:

1)将en-parser-chunking.bin放入Eclipse项目的WebContent/WEB-INF/classesWebContent/WEB-INF/resources文件夹中。这些目录允许WebappClassLoaderBase实例在Web应用程序的运行时加载资源。

2)使用此代码片段(为简洁起见,缩写):

String parserModelPath = "/WEB-INF/resources/en-parser-chunker.bin";
ParserModel model = new ParserModel(servletContext.getResourceAsStream(parserModelPath));

if(model!=null) {
    // From here, <model> is initialized and you can start playing with it...
    // Creating a parser
    Parser parser = ParserFactory.create(model);
    // Parse some things here 
    // ...
}

你应该在运行时获得一个工作Parser。有关参考,请参阅ServletContext#getResourceAsStream的JavaDoc和此StackOverflow post

第二部分答案:

1)将opennlp-tools-<opennlp-version>.jar文件放入WebContent/WEB-INF/lib或在项目设置的Web-App的类路径中引用它。因此,可以在项目的运行时加载和使用库及其类,例如opennlp.tools.parser.ParserModel

2)重新捆绑war存档并将其重新部署到Tomcat的webapps目录。

希望它有所帮助,另请参阅我的similar answer