Friday, November 05, 2010

Installing GWT Developer Plugin in Firefox 3.6 for Linux

If you are developing GWT web apps on a Linux system with Firefox 3.6+, then you might have been prompted to install the GWT Developer Plugin when trying to debug your app on Firefox (see image below).


The problem happens when you try to install the plugin and restart Firefox - only to be prompted to re-install the GWT Developer Plugin again.

It seems like the latest Plugin on Firefox 3.6 requires the libnspr4.so.0d library and Mozilla Firefox 3.6+ only provides libnspr4.so. To solve this problem, simply locate the library and create a sym-link. For example, as root, execute the command:

sudo ln -s /usr/lib64/libnspr4.so /usr/lib64/libnspr4.so.0d

Then restart Firefox, install the GWT Developer Plugin, and then restart Firefox once more. You should now be able to debug your GWT web app!

Note that the location of the libnspr4.so library differs in each Linux distro. But here are a few common folders where it might be

/lib/
/lib64/
/usr/lib/
/usr/lib64/

If you are unable to locate the library in one of the directories above, you can try finding it by executing on the command:

locate libnspr4.so

UPDATE: The library should be provided in mozilla-nspr-32bit or mozilla-nspr.

Hope that helps some of you out! Leave me a comme
nt if you have any questions.


Wednesday, March 10, 2010

Setting Up SmartGWT 2.1 and GWT 2.0 with Eclipse 3.5

Requirements:
Setting Up Eclipse Environment:
  1. First, install Java and Eclipse like you normally would, setting up all the necessary environments (e.g. CLASSPATH, JAVA_HOME, etc).
  2. Install the GWT Eclipse plugin by going to Help > Install New Software...
  3. Press the Add... button and enter the following URL: http://dl.google.com/eclipse/plugin/3.5
  4. Check Google Plugin for Eclipse 3.5 and Google Web Toolkit SDK 2.0.3 and press the Finish button.
  5. Restart Eclipse after installing the GWT Eclipse plugin.
Create a GWT Web Application Project:
  1. Go to File > New > Web Application Project
  2. Enter the Project name: HelloSmartGWT
  3. Enter the Package: com.puguasoft.examples.smartgwt
  4. Be sure Use Goolge Web Toolkit is checked.
  5. Be sure Use Google App Engine is unchecked.
  6. Press the Finish button.
Setup SmartGWT:
  1. In your HelloSmartGWT project, create a new folder lib.
  2. Unzip smartgwt-2.1.zip and place both the smartgwt.jar and smartgwt-skins.jar in the lib folder you just created.
  3. Right-click on the HelloSmartGWT project and go to Properties > Java Build Path > Libraries tab and add both the smartgwt.jar and smartgwt-skins.jar to the build path.
  4. Open the com.puguasoft.examples.smartgwt.client.HelloSmartGWT.java class and replace the entire onModuleLoad() with the following:


public void onModuleLoad() {
IButton button = new IButton("Click Me");
button.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
SC.say("Hello SmartGWT!");
}
});
button.draw();
}
  1. Open the com.puguasoft.examples.smartgwt.HelloSmartGWT.gwt.xml file and delete or comment-out the following:
        <inherits name='com.google.gwt.user.theme.standard.Standard'/>
  1. In the same XML file, add the following inherits elements:
        <inherits name='com.smartgwt.SmartGwt' />
<inherits name='com.smartclient.theme.silverwave.SilverWave' />
  1. Open the war/HelloSmartGWT.html file and add the following between the <head> section and before the hellosmartgwt.nocache.js script:
        <script> var isomorphicDir = "hellosmartgwt/sc/"; </script> 



Compile and Deploy:
  1. Right-click on the HelloSmartGWT project and select Google > GWT Compile.
  2. Press Compile in the dialog.
  3. Pay attention to the console to make sure there are no compile errors.
  4. Now deploy the app by right-clicking on the HelloSmartGWT project and select Debug As > Web Application
  5. After the embedded web server starts, point your browser to the the URL: http://127.0.0.1:8888/HelloSmartGWT.html?gwt.codesvr=127.0.0.1:9997
  6. You should see the following page:

Wednesday, July 22, 2009

Setting up Eclipse and Maven2 for SmartGWT

There is a great HOWTO for setting up Eclipse and Maven2 for SmartGWT:

http://smartgwt.rorschach.de/index.php5/Setting_up_Eclipse_%26_Maven2

[update] The original link seems to be broken, you can try to use the following:


I have also included the instructions below for future reference:


Verifying Maven Configuration

Maven needs to be configured for the GWT-Maven plugin to work correctly, so navigate to your HOME - Folder and make sure there is a valid Maven configuration file. If your username is john, then these would be valid configuration file locations:

   Linux → /home/john/.m2/settings.xml
MacOS X → /Users/john/.m2/settings.xml
Windows XP → C:\Documents and Settings\john\.m2\settings.xml

If you can't find .m2/settings.xml, then create it with the following content:

   <settings xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>${user.home}/.m2/repository</localRepository>
</settings>

(Check out Maven Settings Reference for detailed information on configuring Maven.)

Setting up Eclipse IDE

Download Eclipse IDE for Java EE Developers at Eclipse Downloads, install and launch.

Setting up Maven Integration

  • Navigate to Help > Software Updates and select the Available Software Tab. Click Add Site... and enter the URL below:
     http://m2eclipse.sonatype.org/update
  • Click OK
  • Expand the m2eclipse.sonatype.org/update node and check Maven Integration:
  • Click Install...
  • Click Next, accept the license and click Finish
  • Click Yes when you are asked if you want to restart Eclipse

Creating the Project

  • Navigate to File > New > Project...
  • Select Maven > Maven Project and click Next twice
  • If you've already installed the GWT-Maven Archetype, you can skip the next step
  • Click Add Archetype..., enter the values below and click OK

    Archetype Group Id: com.totsp.gwt
Archetype Artifact Id: maven-googlewebtoolkit2-archetype
Archetype Version: 1.0.3
Repository URL: http://gwt-maven.googlecode.com/svn/trunk/mavenrepo

  • Select Archetype maven-googlewebtoolkit2-archetype and click Next
  • Provide your Maven - Properties and click Finish. Example values:

    Group Id: com.acme
Artifact Id: helloworld
Version: 0.0.1-SNAPSHOT
Package: com.acme.helloworld

  • Open your pom.xml in the Maven POM Editor by double-clicking it
  • Select the Repositories Tab
  • Click Add... and provide the values below * :

    Id: smartclient
Name: smartclient.com
URL: http://www.smartclient.com/maven2/


  • Save your pom.xml and check the Maven Console output for errors
  • Select the Dependencies Tab
  • Click Add... and provide the values below:

    Group Id: com.smartgwt
Artifact Id: smartgwt
Version: 1.0b2-SNAPSHOT

  • Save your pom.xml and check the Maven Console output for errors

Modifying the Application

  • Modify the generated Application.gwt.xml (add the line in bold)

  <module>
<inherits name="'com.google.gwt.user.User'">
<inherits name="'com.google.gwt.user.theme.standard.Standard'">
<inherits name="'com.smartgwt.SmartGwt'"></inherits>
<entry-point class="'com.acme.helloworld.client.Application'">
<stylesheet src="'Application.css'"></stylesheet>
</entry-point>
</inherits>
</inherits>
</module>
  • Modify the generated Application.java (replace all content)

  package com.acme.helloworld.client;
import com.google.gwt.core.client.EntryPoint;
import com.smartgwt.client.util.SC;

public class Application implements EntryPoint {
public void onModuleLoad() { SC.say("Hello SmartGWT"); }
}
  • Modify the generated Application.css (remove all content)

You need to remove all generated CSS - Styles because they would break the SmartGWT layout.
You can add your own Styles if they don't conflict with SmartGWT, of course.

Running the Application

  • Right-click your pom.xml and select Run As > Maven build...
  • Enter the value below into the Textfield labeled Goal:

   gwt:gwt
  • Click Run to start your Application in the GWT Shell

SVN Snapshots

If you want to develop against the latest snapshot from SVN use the repository and artifact properties below:

  • Repository

   Id: smartgwtsnap
Name: smartgwtsnap.rorschach.de
URL: http://smartgwtsnap.rorschach.de
  • Artifact

   Group Id: com.smartgwt
Artifact Id: smartgwt
Version: 1.0b3-SNAPSHOT

More Goals

Appending -U tells Maven to check for updates of -SNAPSHOT dependencies.

All Goals for GWT-Maven can be found here.

  • clean → Purge working directory (target)
  • gwt:gwt → Build Application, Run in Hosted Mode
  • gwt:test → Build Application, Run GWT-Tests
  • javadoc:javadoc → Generate API-Documentation (→ target/site/apidocs)
  • package → Build Application, Run Non-GWT-Tests, Run GWT-Tests, Build WAR-Archive
  • test → Build Application, Run Non-GWT-Tests, Run GWT-Tests

List of Goals Example

Maven supports a comma or space separated list of Goals:


   clean package javadoc:javadoc -U
  • Checks for updates of -SNAPSHOT dependencies (-U)
  • Purges the working directory (clean)
  • Builds the Application (package)
  • Runs the Non-GWT-Tests (package)
  • Runs the GWT-Tests (package)
  • Builds the WAR-Archive (package)
  • Generates the API-Documentation (javadoc:javadoc)

Troubleshooting

Problems loading gwt-dev libraries


   Can't load library: [...]/.m2/repository/com/google/gwt/gwt-dev/1.5.3/[...] 
  • Problem

The GWT-Maven plugin didn't pick up your local Maven repository location when it tried to extract the GWT development libraries. The libraries probably have been extracted to a folder named ${settings.localRepository} inside your workspace. You can delete this folder, of course.

  • (Quick) Solution

Verify your Maven configuration, delete the folder com/google/gwt/gwt-dev inside your local Maven repository and retry.

Problems loading libxpcom / libstdc++


   ** Unable to load Mozilla for hosted mode **
java.lang.UnsatisfiedLinkError: [...]/libxpcom.so: libstdc++.so.5: cannot open shared object file: No such file or directory
  • Problem

Version 5 of libstdc++ isn't installed.

  • Solution

Install the package libstdc++5 and retry. If you're running a Debian-based distribution like Ubuntu use apt-get:

   sudo apt-get install libstdc++5

Warning: Locking assertion failure

   Locking assertion failure.  Backtrace:  #0 [...] 
  • Problem

There is some sort of problem with how the JRE was built.

  • Solution

Can be found here.

   sudo sed -i 's/XINERAMA/FAKEEXTN/g' /usr/lib/jvm/java-1.5.0-sun/jre/lib/i386/xawt/libmawt.so 

and / or

   sudo sed -i 's/XINERAMA/FAKEEXTN/g' /usr/lib/jvm/java-6-sun/jre/lib/i386/xawt/libmawt.so

NoClassDefFoundError: GWTShell

   java.lang.NoClassDefFoundError: com/google/gwt/dev/GWTShell
Caused by: java.lang.ClassNotFoundException: com.google.gwt.dev.GWTShell [...]
Could not find the main class: com.google.gwt.dev.GWTShell. Program will exit.
  • Problem

There is a problem with the path to your local Maven repository.

  • Solution

Make sure the path to your local Maven repository doesn't contain any non-US-ASCII characters, e.g. an Umlaut.

Thursday, December 25, 2008

JIRA Buddy 1.0.1 Released

The JiraBuddy Team over at PuguaSoft.com has just released the latest version of JiraBuddy 1.0.1. With this release, they added support for JIRA servers with default ports (80), added timeouts for webservice invokations, added more logging, and other bug fixes and enhancements. You can find out more at the official JIRA Buddy website at www.jirabuddy.com.

Merry Christmas and Happy Holidays!!!

Friday, December 05, 2008

JiraBuddy Version 1.0.0 Release

I'm proud to announce version 1.0.0 of the JiraBuddy Eclipse plugin for JIRA. JiraBuddy has gone into hibernation since it's initial release over two years ago. In the past few months, I've taken some time outside work and my normal life to update JiraBuddy to be compatible with Eclipse 3.4/Ganymede and fixing many bugs. Some of the new features include hyper-links inside the Hover Info feature, better server session and connection handling, and an updated preference page. To see a more complete list of changes since the last release, check out the TODO page on the official JiraBuddy website at www.jirabuddy.com.

I hope you enjoy JiraBuddy and find it useful. If you have any suggestions on how to make JiraBuddy better, or to report a bug, please send an email to development@jirabuddy.com.

Thanks,
~Chris