Stanford nlp HTTP状态500-javax.servlet.ServletException:java.lang.NoClassDefFoundError:edu/stanford/nlp/tagger/maxent/MaxentTagger

Stanford nlp HTTP状态500-javax.servlet.ServletException:java.lang.NoClassDefFoundError:edu/stanford/nlp/tagger/maxent/MaxentTagger,stanford-nlp,pos-tagger,Stanford Nlp,Pos Tagger,我正在尝试用jsp标记我的查询。当我将其作为java应用程序运行时,它运行良好,但当我将其作为jsp运行时,会出现以下异常 org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: edu/stanford/nlp/tagger/maxent/MaxentTagger org.apache.jasper.servlet.JspServletWrapper.h

我正在尝试用jsp标记我的查询。当我将其作为java应用程序运行时,它运行良好,但当我将其作为jsp运行时,会出现以下异常

org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: edu/stanford/nlp/tagger/maxent/MaxentTagger
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:548)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:454)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52
我的jsp代码如下所示

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>welcome</h1>
<%@ page import="Search.SearchMain" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<% 
    List<String> res =new ArrayList<String>();
    String q = request.getParameter("sqry");
    res = SearchMain.search(q,1);
    for(String r : res){%>
        <%=r%>
    <%}
%>
</body>
</html>

在此处插入标题
欢迎
下面给出了我的java代码

package taggerPOS;

import java.util.ArrayList;
import java.util.List;

import edu.stanford.nlp.ling.HasWord;
import edu.stanford.nlp.ling.Sentence;
import edu.stanford.nlp.ling.TaggedWord;
import edu.stanford.nlp.tagger.maxent.MaxentTagger;

public class Tagger {
    public static List<String> getTag(String query){
        List<String> nouns = new ArrayList<String>();
        MaxentTagger tagger = new MaxentTagger("tagger/english-left3words-distsim.tagger");
        String[] tokens = query.split("\\s+");
        List<HasWord> sent = Sentence.toWordList(tokens);
        List<TaggedWord> taggedSent = tagger.tagSentence(sent);
        //System.out.println(taggedSent);
        for (TaggedWord tw : taggedSent) {
              if (tw.tag().startsWith("NN")) {
                //System.out.println(tw.word());
                nouns.add(tw.word());
              }
            } 
        return nouns;
    }
    public static void main(String args[]){
        List<String> n = getTag("This sentence contains two noun phrases");
        for(String a:n){
            System.out.println(a);
        }
    }
}
包装标签;
导入java.util.ArrayList;
导入java.util.List;
导入edu.stanford.nlp.ling.HasWord;
导入edu.stanford.nlp.ling.句子;
导入edu.stanford.nlp.ling.TaggedWord;
导入edu.stanford.nlp.tagger.maxent.MaxentTagger;
公共类标记器{
公共静态列表getTag(字符串查询){
列表名词=新的ArrayList();
MaxentTagger tagger=新的MaxentTagger(“tagger/english-left3words-distsim.tagger”);
String[]tokens=query.split(\\s+);
发送列表=句子。toWordList(标记);
List taggedSent=tagger.tagsence(已发送);
//System.out.println(taggedSent);
for(TaggedWord tw:taggedSent){
if(tw.tag().startsWith(“NN”)){
//System.out.println(tw.word());
名词。添加(tw.word());
}
} 
返回名词;
}
公共静态void main(字符串参数[]){
List n=getTag(“这个句子包含两个名词短语”);
for(字符串a:n){
系统输出打印项次(a);
}
}
}
我已经将Stanford-POStagger.jar添加到类路径中,并且还添加了tagger模型。

尝试将JAR添加到/WEB-INF/lib文件夹,以便tomcat可以找到它们


(如本文所述:)

谢谢。此错误已解决,但我遇到另一个错误:-(HTTP Status 500-edu.stanford.nlp.io.RuntimeIOException:加载标记器模型时出错(可能缺少模型文件).org.apache.jasper.jaspereException:edu.stanford.nlp.io.RuntimeIOException:加载标记器模型(可能缺少模型文件)org.apache.jasper.servlet.JspServletWrapper.HandleJSPEException(JspServletWrapper.java:548)org.apche.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:469)时出错org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)我假设您的标记器文件不在类路径上,检查它是否正确打包并部署到服务器(所有类路径引用的文件都应该在/WEB-INF/classes中)