After upgrade to 4.1 can't edit existing classes on Windows platform.

  • 7016467
  • 04-May-2015
  • 04-May-2015

Environment

NetIQ Access Manager 4.1
Admin Console installed on Windows 2008 R2

Situation

After upgrading from 4.0.1_HF3 to 4.1 customer get's following exception:

"JasperException: Unable to compile class for JSP"  (See full exception stack under Additional Information)

when going to IDP -> Local -> Classes and then clicks on any of his existing Classes.

This same exception is seen regardless of which class is selected.
 
This issue was not seen prior to the upgrade on 4.0.1.

Resolution

Reported to engineering to fix in the upgrade code, but the issue appears when there are multiple versions of a jar file.
After upgrading to 4.1, there were multiple versions of ecj-* in the following directories.  We had to remove the ones mentioned below and ensured only ecj-4.4.jar was left.

Specifically, we did the following:

1)  Stopped Tomcat, otherwise won't let you delete/move the files.
2) Removed the following old versions:

- c:\program files (x86)\novell\tomcat\lib\ecj-4.2.2.jar
 - c:\program files (x86)\novell\devman\jcc\lib\ecj-3.7.jar - c:\program files (x86)\novell\devman\jcc\lib\ecj-4.2.2.jar

Left

- c:\program files (x86)\novell\tomcat\lib\ecj-4.4.jar
 - c:\program files (x86)\novell\devman\jcc\lib\ecj-4.4.jar

3) Restart Tomcat.

Cause

In certain cases upgrade is not removing previous version of ecj-*.jar file which causes an incompatibility.

Additional Information

Exception in stderr on the Admin Console looks like this:

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 34 in the jsp file: /portal/modules/nids/skins/default/devices/default/local/WizardPage_AuthenticationClass_Name.jsp
The type new Comparator<KeyValuePair>(){} must implement the inherited abstract method Comparator<KeyValuePair>.thenComparing(Function<? super KeyValuePair,? extends U>, Comparator<? super U>)
31: 
32: <nids:stringtable bundle = "<%= Constants.NIDP_RESOURCE_BUNDLE %>" />
33: <%!
34: private static Comparator<KeyValuePair> keyListCmp = new Comparator<KeyValuePair>() {
35:     public int compare( KeyValuePair kvp1, KeyValuePair kvp2 ) {
36:        return kvp1.getValue().compareToIgnoreCase( kvp2.getValue() );
37:     }


An error occurred at line: 34 in the jsp file: /portal/modules/nids/skins/default/devices/default/local/WizardPage_AuthenticationClass_Name.jsp
The type new Comparator<KeyValuePair>(){} must implement the inherited abstract method Comparator<KeyValuePair>.thenComparing(Function<? super KeyValuePair,? extends U>)
31: 
32: <nids:stringtable bundle = "<%= Constants.NIDP_RESOURCE_BUNDLE %>" />
33: <%!
34: private static Comparator<KeyValuePair> keyListCmp = new Comparator<KeyValuePair>() {
35:     public int compare( KeyValuePair kvp1, KeyValuePair kvp2 ) {
36:        return kvp1.getValue().compareToIgnoreCase( kvp2.getValue() );
37:     }


An error occurred at line: 34 in the jsp file: /portal/modules/nids/skins/default/devices/default/local/WizardPage_AuthenticationClass_Name.jsp
The type new Comparator<KeyValuePair>(){} must implement the inherited abstract method Comparator<KeyValuePair>.thenComparing(Comparator<? super KeyValuePair>)
31: 
32: <nids:stringtable bundle = "<%= Constants.NIDP_RESOURCE_BUNDLE %>" />
33: <%!
34: private static Comparator<KeyValuePair> keyListCmp = new Comparator<KeyValuePair>() {
35:     public int compare( KeyValuePair kvp1, KeyValuePair kvp2 ) {
36:        return kvp1.getValue().compareToIgnoreCase( kvp2.getValue() );
37:     }


An error occurred at line: 34 in the jsp file: /portal/modules/nids/skins/default/devices/default/local/WizardPage_AuthenticationClass_Name.jsp
The type new Comparator<KeyValuePair>(){} must implement the inherited abstract method Comparator<KeyValuePair>.thenComparingDouble(ToDoubleFunction<? super KeyValuePair>)
31: 
32: <nids:stringtable bundle = "<%= Constants.NIDP_RESOURCE_BUNDLE %>" />
33: <%!
34: private static Comparator<KeyValuePair> keyListCmp = new Comparator<KeyValuePair>() {
35:     public int compare( KeyValuePair kvp1, KeyValuePair kvp2 ) {
36:        return kvp1.getValue().compareToIgnoreCase( kvp2.getValue() );
37:     }


An error occurred at line: 34 in the jsp file: /portal/modules/nids/skins/default/devices/default/local/WizardPage_AuthenticationClass_Name.jsp
The type new Comparator<KeyValuePair>(){} must implement the inherited abstract method Comparator<KeyValuePair>.thenComparingLong(ToLongFunction<? super KeyValuePair>)
31: 
32: <nids:stringtable bundle = "<%= Constants.NIDP_RESOURCE_BUNDLE %>" />
33: <%!
34: private static Comparator<KeyValuePair> keyListCmp = new Comparator<KeyValuePair>() {
35:     public int compare( KeyValuePair kvp1, KeyValuePair kvp2 ) {
36:        return kvp1.getValue().compareToIgnoreCase( kvp2.getValue() );
37:     }


An error occurred at line: 34 in the jsp file: /portal/modules/nids/skins/default/devices/default/local/WizardPage_AuthenticationClass_Name.jsp
The type new Comparator<KeyValuePair>(){} must implement the inherited abstract method Comparator<KeyValuePair>.thenComparingInt(ToIntFunction<? super KeyValuePair>)
31: 
32: <nids:stringtable bundle = "<%= Constants.NIDP_RESOURCE_BUNDLE %>" />
33: <%!
34: private static Comparator<KeyValuePair> keyListCmp = new Comparator<KeyValuePair>() {
35:     public int compare( KeyValuePair kvp1, KeyValuePair kvp2 ) {
36:        return kvp1.getValue().compareToIgnoreCase( kvp2.getValue() );
37:     }


An error occurred at line: 34 in the jsp file: /portal/modules/nids/skins/default/devices/default/local/WizardPage_AuthenticationClass_Name.jsp
The type new Comparator<KeyValuePair>(){} must implement the inherited abstract method Comparator<KeyValuePair>.reversed()
31: 
32: <nids:stringtable bundle = "<%= Constants.NIDP_RESOURCE_BUNDLE %>" />
33: <%!
34: private static Comparator<KeyValuePair> keyListCmp = new Comparator<KeyValuePair>() {
35:     public int compare( KeyValuePair kvp1, KeyValuePair kvp2 ) {
36:        return kvp1.getValue().compareToIgnoreCase( kvp2.getValue() );
37:     }


Stacktrace:
	at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
	at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
	at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:485)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:379)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:341)
	at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:604)
	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:543)
	at com.novell.nps.gadgetManager.BaseGadgetInstance.dispatchJSP(BaseGadgetInstance.java:656)
	at com.novell.nps.gadgetManager.BaseGadgetInstance.callGetData(BaseGadgetInstance.java:2248)
	at com.novell.nps.gadgetManager.GadgetManager.callGetData(GadgetManager.java:2498)
	at com.novell.nps.gadgetManager.GadgetManager.buildUnrenderedHTMLResponse(GadgetManager.java:2278)
	at com.novell.nps.gadgetManager.GadgetManager.processServiceRequest(GadgetManager.java:1077)
	at com.novell.nps.PortalServlet.handleFrameService(PortalServlet.java:509)
	at com.novell.nps.PortalServlet.processRequest(PortalServlet.java:373)
	at com.novell.nps.PortalServlet.doPost(PortalServlet.java:279)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
	at com.novell.emframe.fw.servlet.AuthenticatorServlet.service(AuthenticatorServlet.java:344)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at com.novell.emframe.fw.filter.CrossScriptingFilter.doFilter(CrossScriptingFilter.java:25)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at com.novell.emframe.fw.filter.AntiCsrfServletFilter.doFilter(AntiCsrfServletFilter.java:276)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:612)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
	at com.novell.accessmanager.tomcat.SynchronizationValve.invoke(y:671)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)