<< June 2015 | Home | August 2015 >>

Eclipse target platform invalidated by IBM Notes 9.0.1FP4 on Mac

After installing IBM Notes 9.0.1FP4 I have been unable to launch Notes from my Eclipse workspace when doing RCP development (i.e. plugin development) for Notes. I finally decided to solve it. The stacktrace is like the one below:

2015/07/20 08:16:42.280 SEVERE CLPDN0016E: Error starting RCPApplication com.ibm.rcp.personality.framework.RCPApplication 
::class.method=com.ibm.rcp.personality.framework.internal.RCPApplication.run() ::thread=Thread-1 
::loggername=com.ibm.rcp.personality.framework.internal

java.lang.NoSuchFieldError: isWindows
   at com.ibm.rcp.platform.personality.DefaultWorkbenchWindowAdvisor.createLaunchChevron(DefaultWorkbenchWindowAdvisor.java:2229)
   at com.ibm.rcp.platform.personality.DefaultWorkbenchWindowAdvisor.createShortcutBarItems(DefaultWorkbenchWindowAdvisor.java:591)
   at com.ibm.rcp.platform.personality.DefaultWorkbenchWindowAdvisor.createWindowContents(DefaultWorkbenchWindowAdvisor.java:733)
The issue turned out to be due to duplicate similar named plugins from the target platform with different versions. For instance I had the com.ibm.common.services.icalendar plugin in both version 9.0.1.20131022-0932 and in version 9.0.1.20150610-1521. Manually running through the plugins included in the target platform and excluding the older versions solved the issue. There must have been a problem deleting the older versions when upgrading my Notes client but in any case it's solved now.

IBM Notes IBM Connections plugins cannot connect after upgrade to v. 9.0.1FP4 on Mac

After upgrading to IBM Notes 9.0.1 on my Mac the IBM Connections activities sidebar plugin failed to connect to our IBM Connections server. After tingering around with connection settings I checked the trace log and saw the below stacktrace:

CWPST0306W: An exception occurred while invoking the target method login.
javax.security.auth.login.LoginException
   at com.ibm.rcp.accounts.internal.auth.module.AbstractJ2eeFormLoginModule.login(AbstractJ2eeFormLoginModule.java:393)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at com.ibm.rcp.security.auth.ExtLoginModuleProxy.invokeImpl(ExtLoginModuleProxy.java:109)
   at com.ibm.rcp.internal.security.AbstractProxy.invoke(AbstractProxy.java:77)
   at com.sun.proxy.$Proxy2.login(Unknown Source)
   at com.ibm.rcp.security.auth.ExtLoginModuleProxy.login(ExtLoginModuleProxy.java:141)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769)
   at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
   at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683)
   at java.security.AccessController.doPrivileged(Native Method)
   at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
   at javax.security.auth.login.LoginContext.login(LoginContext.java:579)
   at com.ibm.rcp.security.auth.service.AbstractLoginService.login(AbstractLoginService.java:125)
   at com.ibm.rcp.accounts.internal.AccountsLoginContextServiceImpl.login(AccountsLoginContextServiceImpl.java:189)
   at com.ibm.rcp.net.http.internal.URLConnectionFactory.getURLConnection(URLConnectionFactory.java:175)
   at com.ibm.rcp.net.http.internal.URLConnectionFactory.getURLConnection(URLConnectionFactory.java:69)
   at com.ibm.rcp.net.http.internal.protocol.HttpsURLConnection.(HttpsURLConnection.java:73)
   at com.ibm.rcp.net.http.internal.protocol.HttpsHandler.createURLConnection(HttpsHandler.java:42)
   at com.ibm.rcp.net.http.internal.protocol.BaseHandler.openConnection(BaseHandler.java:73)
   at com.ibm.rcp.net.http.internal.protocol.BaseHandler.openConnection(BaseHandler.java:96)
   at org.eclipse.osgi.framework.internal.protocol.URLStreamHandlerProxy.openConnection(URLStreamHandlerProxy.java:112)
   at java.net.URL.openConnection(URL.java:945)
   at com.ibm.lconn.client.base.service.Connector.getConnection(Connector.java:69)
   at com.ibm.lconn.client.base.service.Connector.get(Connector.java:39)
   at com.ibm.lconn.client.base.service.ServiceFeedUtil.getHiddenEmail(ServiceFeedUtil.java:278)
   at com.ibm.lconn.client.base.service.ServiceFeedUtil$1.run(ServiceFeedUtil.java:212)
   at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: java.lang.IllegalArgumentException: TLSv1.1
   at com.sun.net.ssl.internal.ssl.ProtocolVersion.valueOf(ProtocolVersion.java:133)
   at com.sun.net.ssl.internal.ssl.ProtocolList.(ProtocolList.java:38)
   at com.sun.net.ssl.internal.ssl.SSLSocketImpl.setEnabledProtocols(SSLSocketImpl.java:2218)
   at com.ibm.rcp.security.ssl.PlatformSSLProtocolSocketFactory.createSocket(PlatformSSLProtocolSocketFactory.java:158)
   at sun.net.www.protocol.https.HttpsClient.createSocket(HttpsClient.java:404)
   at sun.net.NetworkClient.doConnect(NetworkClient.java:145)
   at sun.net.www.http.HttpClient.openServer(HttpClient.java:424)
   at sun.net.www.http.HttpClient.openServer(HttpClient.java:538)
   at sun.net.www.protocol.https.HttpsClient.(HttpsClient.java:276)
   at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
   at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:172)
   at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:966)
   at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:158)
   at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1031)
   at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:230)
   at com.ibm.rcp.accounts.internal.auth.module.AbstractJ2eeFormLoginModule.executeLogin(AbstractJ2eeFormLoginModule.java:180)
   at com.ibm.rcp.accounts.internal.auth.module.AbstractJ2eeFormLoginModule.login(AbstractJ2eeFormLoginModule.java:364)
   ... 33 more
The issue is caused by IBM Notes on Mac using the standard Apple Java v. 1.6 that doesn't support TLS v. 1.1 and it seems like the newer versions of the sidebar plugin forces the TLS version to 1.1. I couldn't find a way using JVM arguments to change that.

After corresponding with IBM the issue has been confirmed and is tracked as IBM Notes SPR #NPEI9Y85BZ and the Lotus Expeditor team is working on a fix. If you open a PMR and reference this detect you will receive the fix once ready.