gpt4 book ai didi

java - JSP 中的 Jar 文件未正确加载

转载 作者:行者123 更新时间:2023-11-28 23:38:35 24 4
gpt4 key购买 nike

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

我的难题:

我试图(很差地)从 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 中分离逻辑层和表示层的正确方法——我可以用其他语言做到这一点并且理解概念很好。

在发布之前,我已经仔细阅读并尝试使用以下解决方案,但都失败了:

还有更多尝试解决这个问题。

最佳答案

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

另一方面,您的MRSearcher() 构造函数必须是public,如果您省略它,默认构造函数将是package并且不能从其他包访问。检查您的 Main.java 类是否在 MRSearcher 的同一个包中。如果是,这就是它可以调用 MRSearcher 构造函数的原因。

希望对你有帮助

问候,

关于java - JSP 中的 Jar 文件未正确加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22344001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com