JSP中的Jar文件未正确加载

时间:2014-03-12 06:50:35

标签: java jsp tomcat servlets jar

这可能是重复的,但我无法使用以下答案和互联网上的许多其他网站找到答案......

我的难题:

我试图(很差)在jsp中从jar运行一些类。我有效的是以下内容:

<%@page import="edu.cs242.hadoop.*" %>
<%
... do some stuff ...
MRSearcher ss = new MRSearcher();
... do some stuff ...
%>

但每次我尝试运行jsp时都会出现以下错误:

An error occurred at line: 32 in the jsp file: /hadoop.jsp
MRSearcher cannot be resolved to a type

我的webapp结构如下:

/
|hadoop.jsp
|lucene.jsp
|index.jsp
|WEB-INF/
    |lib/
      |lucene.jar
      |hadoop.jar
    |classes/
      |*.java for our hadoop.jar

我试过调用jar本身并通过tomcat编译java,两者都产生相同的结果。

以下是MRSearcher课程的片段:

package edu.cs242.hadoop;

import java.io.*;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;


/**
 * Created by cloudera on 3/10/14.
 */
public class MRSearcher {

    MRSearcher() {}

    public String[] run(String arg1, String arg2) {
        String[] things = new String[] {};
        // do stuff
        return things;
    }
}

还有其他类,但是这个类允许我们与程序的其余部分进行交互。 main位于一个名为Main.java的文件中,它只执行命令行输出。语法是正确的,因为我们可以运行main和检索输出。

我并不是说听起来很无礼,但请不要评论在JSP中包含诸如JAR文件之类的东西的无用性和可怕性。这绝不是生产,它是一个不需要正确性的学校项目,它需要运作的必要性。如果我这样做是为了工作,我会做得对,但是现在我并不关心在JSP中分离逻辑和表示层的正确方法 - 我可以在其他语言中做到这一点并理解概念非常好。

我在查看之前已经查看并尝试使用以下解决方案,所有这些都失败了:

更多的是尝试解决这个问题。

1 个答案:

答案 0 :(得分:0)

WEB-INF/classes/中,您必须拥有MRSearcher.class个文件。请记住,JSP文件是在您第一次访问它时编译的,因此您的项目可以编译,尽管您的JSP不太好。

另一方面,您的MRSearcher()构造函数必须是public,如果省略此项,默认情况下构造函数将为package,并且无法从其他包访问。检查您的Main.java课程是否与MRSearcher相同。如果是,这就是它可以调用MRSearcher构造函数的原因。

我希望这会对你有所帮助。

此致