我已经交了一份差不多10年的申请,用于维修。客户(内部)需求变更。此应用程序是在Eclipse中构建和维护的。我需要将其导入IntelliJ(当前公司"标准")以实现需求变更。
该应用程序正在生产中的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。我经历过谷歌搜索和众多推荐的解决方案(其中大部分都是从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实现类。
最后,我知道有很多事情可以用来制作这些代码&#34;更好&#34;但是我不需要它,我只需要找出导致这个JasperException的原因并通过它,这样我就可以在IntelliJ中调试应用程序。
答案 0 :(得分:1)
我已经解决了这个问题,我想在CLEAR TERMS中发布适用于我的解决方案。似乎其他解决方案可能是正确的,但不是CLEAR。有一些解释,但最后的修复是在最后。
我正在JDK1.8.0 bld 102上进行开发,并将应用程序配置设置为针对Java 1.6标准进行构建。我在我的机器上安装了JRE 1.6,JRE 1.7和JRE 1.8。我试图针对JRE 1.6运行我的代码,因为服务器运行的是Java 6,但这没有任何帮助。 IntelliJ IDEA仍然使用JDK1.8中的 BUILDING 和使用JVM 。我下载了JDK1.7并将其与我的JDK1.8安装一起安装并重新配置IntelliJ以使用JDK1.7进行构建并在本地运行应用程序。这解决了我的问题。
因此,最后的修复是将 Gradle JVM 设置为使用JDK1.7.0_80而不是JDK1.8.0_102 - IntelliJ IDEA Project SDK仍设置为1.8。