java - 如何加载 'ParserModel' 以及将 "en-parser-chunking.bin"文件放置在 Web 应用程序中的何处?

标签 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) 放置 en-parser-chunking.bin进入WebContent/WEB-INF/classesWebContent/WEB-INF/resources Eclipse 项目的文件夹。这些是 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在运行时。有关引用,请参阅 JavaDoc ServletContext#getResourceAsStream还有这个StackOverflow post .

第二部分答案:

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

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

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

关于java - 如何加载 'ParserModel' 以及将 "en-parser-chunking.bin"文件放置在 Web 应用程序中的何处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44429452/

相关文章:

java - 如何将字符串数据从sqlite for android存储到整数数组中

java - java实际上是如何在屏幕上打印的

python - 使用 sqlite 在 python 中使用 cursor.execute 和 cursor.fetchall 的问题

java - 在 Maven 依赖项部分显示 jar,而不在 cmd 中执行 mvn install

java - Windows Jenkins 服务器无法到达代理后面的插件中心

java - 嵌入式系统中线程池的优点

java - 有人使用 Eclipse 成功构建了 Bruce Eckels 的 'Thinking in java' 第四版吗?

java - 多个浏览器实例是否在同一个 session 中运行

java - 小服务程序 : "%2B" is converted into space

Tomcat 无法获取另一个 webapp 的 ServletContext