Thursday, August 15, 2013

Blocked loading mixed active content

Problem

With the latest versions of firefox, a javascript file fail to load from an external site such as google using the following code:


 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.js"></script>  

The connection was secure running on HTTPS. However the connection to load the javascript file was not secure running purely on HTTP.

Solution


To get the javascript file to load properly I simply changed the SRC URL to use HTTPS as shown below:

 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.js"></script>  

Monday, August 5, 2013

ClassFormatException Invalid byte tag in constant pool: 60 with Grails in Tomcat 7.0.42

The Problem

I encountered this error when deploying my grails application to the latest version of Tomcat 7.0.42.

The stacktrace is shown below:


 SEVERE: Unable to process Jar entry [com/ibm/icu/impl/data/LocaleElements_zh__PINYIN.class] from Jar [jar:file:/usr/local/apache-tomcat-7.0.42/webapps/mutations/WEB-INF/lib/icu4j-2.6.1.jar!/] for annohas been forcibly unregistered.  
 tations  
 org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 60  
     at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:133)  
     at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60)  

The offending jar file was the
icu4j-2.6.1.jar

The Solution

I updated the BuildConfig.groovy file to remove any dependencies to the offending JAR file and updated the dependency to use the latest version of the icu4j which at the time was version 51.1. To do that I inserted this code:


   inherits("global") {  
           excludes "icu4j"  
   }  
   dependencies {  
           runtime 'com.ibm.icu:icu4j:51.1'  
   }  

Environment

Grails version: 2.2.4
Tomcat version: 7.0.42