【问题标题】:Eclipse error: indirectly referenced from required .class files, working from a .java file but not from a .jsp file on a Tomcat Server? [duplicate]Eclipse 错误:从所需的 .class 文件间接引用,从 .java 文件而不是从 Tomcat 服务器上的 .jsp 文件工作? [复制]
【发布时间】:2017-07-26 13:24:50
【问题描述】:

我在 Eclipse 中收到以下错误:

HTTP 状态 500 - 无法为 JSP 编译类:

输入异常报告

消息无法为 JSP 编译类:

描述服务器遇到阻止它的内部错误 完成此请求。

异常 org.apache.jasper.JasperException:无法编译类 对于 JSP:

在生成的 java 文件中,1 行出现错误: [C:\Users[...].metadata.plugins\org.eclipse.wst.server.core\tmp1\work\Catalina\localhost[...]\org\apache\jsp\test[...] _jsp.java] com.fasterxml.jackson.core.JsonParseException 类型不能 解决。它是从所需的 .class 文件中间接引用的

生成的 java 文件中的 [19] 行发生错误: [C:\Users[...].metadata.plugins\org.eclipse.wst.server.core\tmp1\work\Catalina\localhost[...]\org\apache\jsp\test[...] _jsp.java] 只能导入一个类型。 com.fasterxml.jackson.core.JsonParseException 解析为一个包

jsp文件中的第23行发生错误:/test/[...].jsp 来自类型 [...] 的方法 get(String) 指的是 缺少类型 JsonParseException

堆栈跟踪: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:468) org.apache.jasper.compiler.Compiler.compile(Compiler.java:378) org.apache.jasper.compiler.Compiler.compile(Compiler.java:353) org.apache.jasper.compiler.Compiler.compile(Compiler.java:340) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

note 根本原因的完整堆栈跟踪可在 Apache Tomcat/7.0.47 日志。

通常我理解这意味着我使用的一个类需要另一个不在类路径上的类,正如@Arne here 所回答的那样

但是,该类位于类路径中,当我从 .java 文件中的 main 方法运行它时,一切正常。但是当我从 Tomcat 服务器上的 .jsp 文件运行它时,它不再起作用了。这怎么可能?

代码

JSP File和java main方法都调用同一个类Wiki Picture,基本上就是使用Wikipedia API来获取文章图片。

奇怪的是,当 Tomcat 服务器上的 jsp 文件抛出异常时, main 方法有效。

JSP 文件

<%@ page import="json.*" %>
<%@ page import="main.*" %>
<%@ page import="java.util.*" %>

<%@ page import="com.fasterxml.jackson.databind.*" %>
<%@ page import="com.fasterxml.jackson.core.*" %>
<%@ page import="com.fasterxml.jackson.core.JsonParseException" %>


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<%

ArrayList<WikiPicture> pictures = WikiPicture.get("London");

for (WikiPicture picture: pictures) {
    System.out.println("picture: " + picture.getURL());
}

%>

</body>
</html>

Java 主方法

package json;

import java.util.ArrayList;

import com.fasterxml.jackson.core.JsonParseException;

public class JsonTest {

    public static void main(String args[]) {

        ArrayList<WikiPicture> pictures = null;;
        try {
            pictures = WikiPicture.get("Lausanne");
        } catch (JsonParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        for (WikiPicture picture: pictures) {
            System.out.println("picture: " + picture.getURL());
        }
    }
}

【问题讨论】:

  • 没有任何上下文的想法。
  • @Christopherschneider 我已经更新了错误信息。
  • 我想做的是用 Jackson 处理 JSON 数据
  • An error occurred at line: 1 in the generated java file: 首先查看第 1 行生成的 Java 文件。您也可能存在依赖关系冲突。验证传递依赖项没有覆盖所需的依赖项。
  • @CheistopherSchneider 是“生成的Java文件”的jsp文件还是别的什么?因为在jsp中第1行不能出错。

标签: java eclipse jsp tomcat


【解决方案1】:

jackson-core.jar 放在WEB-INF/lib 目录中。您的 JSP 找不到类 com.fasterxml.jackson.core.JsonParseException

【讨论】:

  • 为什么要投反对票?它有什么问题?
  • 我想知道为什么这也被否决了。不是我。我会试试看。感谢您的回答。
  • 好像成功了!!!非常感谢。我希望它确实做到了,我将对其进行更多测试并尝试实施该程序。再次感谢。
  • @sevku,感谢您的确认。请对其进行更多测试并确保它确实有效。如果是,请将此标记为答案,以便将来的读者受益。看到这张反对票,读者甚至都不会看。
  • 是的!就像我预期的那样工作。有一件令人困惑的事情很难。我现在在 Java 资源中有一个 lib 文件夹,在 Web-INF 文件夹中有一个。有没有可能只使用一个?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-01
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多