项目在 Eclipse 中工作,但是当导入到 IntelliJ IDEA 中时,我得到了 JasperException re: CharSequence

Project works in Eclipse but when imported into IntelliJ IDEA I get the JasperException re: CharSequence

我收到了一份将近 10 年的申请,用于维护。客户(内部)有需求变更。到目前为止,该应用程序是在 Eclipse 中构建和维护的。我需要将其导入IntelliJ(当前公司"standard")以实现需求变更。

该应用程序 运行 正在生产环境中的 Websphere 服务器上运行,因此本地调试环境是项目中的 Jetty,它允许开发人员使用 localhost:(portNumber )。该应用程序将 运行 并使用 Eclipse 进行调试 - 我已经花时间验证了这一点。当我尝试使用 IntelliJ 运行 或调试它(本地硬盘驱动器上的完全相同的代码)时,应用程序将启动,但一旦我点击某个 JSP 并尝试加载包含的JSP,我收到以下错误消息(为便于阅读而格式化):

org.apache.jasper.JasperException: Unable to compile class for JSP||
An error occurred at line: 6 in the jsp file: 
/lookupFiles/myCodes.jsp|Generated servlet error:|
The type java.lang.CharSequence cannot be resolved. 
It is indirectly referenced from required .class files||

我已经完成了我认为可以做的代码搜索,但应用程序中的任何地方都没有 CharSequence。我已经完成了 Google 搜索和许多推荐的解决方案(其中大部分都说要从 Java 版本 8 回滚到版本 7)。我正在使用 JDK 1.8.0 build 102,我的环境设置为 Java 6(服务器上的内容)的源兼容性。所以,我认为默认方法不是问题。

这是包含文件中的代码(第 6 行是开始 JSP 标记):

<jsp:useBean class="commands.CommandReciever" id="receiver"></jsp:useBean>
<%@page import="my.json.JSONObject,my.json.HTTP"%>
<%@page import="org.json.JSONArray" %>
<%@page import="commands.AjaxCommand" %> 

<%
JSONObject obj = HTTP.toJSONObject(request);
obj.put("operation","select");
obj.put("index",3);
obj.put("tableNumber",100);

AjaxCommand command = new AjaxCommand("username", obj);

receiver.executeCommandSQL(command);
JSONArray jArray = command.getResults();
String keyCodes = "";
String keyValues = "";
  if(jArray.length() > 0){
    int ctr = 0;
    out.println("<option value=\"\"> - </option>");      
    while(ctr < jArray.length()){
        obj = (JSONObject)jArray.getJSONObject(ctr);
        keyCodes =  obj.optString("KEY_ID");
        keyValues = obj.optString("LONG1_TX");
        out.println("<option value=\"" + keyCodes.substring(1) + "\">" + keyCodes + " - " + keyValues + "</option>");
        ctr++;
    }
  }
%>

我检查了依赖项,导入的本地 类 没有实现任何 CharSequence 实现 类。

最后,我知道可以做很多事情来制作这段代码 "better" 但我不需要那个,我只需要找出导致此 JasperException 的原因并通过这样我就可以在 IntelliJ 中调试应用程序。

我已经解决了这个问题,我想 post 明确条款中对我有用的解决方案。似乎其他解决方案可能是正确的,但不是 CLEAR。有一点解释,但最终修复在最后。

我在 JDK1.8.0 bld 102 上开发并将应用程序配置设置为回退以根据 Java 1.6 标准构建。我已经在我的机器上安装了 JRE 1.6、JRE 1.7 和 JRE 1.8。我试图 运行 我的代码针对 JRE 1.6,因为服务器是 运行ning Java 6,但这没有帮助。 IntelliJ IDEA 仍然BUILDING反对并使用来自 JDK1.8 的 JVM。我下载了 JDK1.7 并将其与我的 JDK1.8 安装一起安装,并重新配置 IntelliJ 以使用 JDK1.7 进行构建并 运行 在本地安装应用程序。这解决了我的问题。

因此,最后的修复是将我的 Gradle JVM 设置为使用 JDK1.7.0_80 而不是 JDK1.8.0_102 - IntelliJ IDEA 项目 SDK 仍设置为 1.8。