Friday, March 11, 2011

Belkin Play B600 Duplicate IP Address Problem

I have a cable modem internet connection that's shared by several computers at home via a Belkin wireless router. A Windows Vista PC is actually wired to the router, the other computers are on a WLAN.

The router is at http://192.168.2.1/. The wired PC is usually at 192.168.2.2. Other wireless devices get addresses like 192.168.2.3, 192.168.2.9 etc., meaning: Everything is on the same subnet, contrary to my previous wireless router that used different subnets for the wired and wireless devices.

Sometimes the wired PC reports a duplicate IP address error. The "easiest" fix seems to be:
  1. Power the PC down
  2. Power-cycle the wireless router
  3. Start the PC back up

Thursday, March 10, 2011

"Portable" Eclipse Projects

When you create a new Eclipse 'Plug-in' project, its initial configuration will lock to your current JRE and compiler settings.
When you then share that project with other people, they will see compiler errors because you may have used Java 1.6_19 on Linux while they use Java 1.6_20 on Windows.

To make your project more portable, do this:

  1. In the Package Explorer, right-click on your Plug-in Project and select "Properties"
  2. Under "Java Build Path", select tab "Libraries", item "JRE System Library", button "Edit". It should default to a specific "Execution environment" like "JavaSE1-6 (MacOS X 1.6.0 System). Change that to "Workspace default JRE", meaning: Use whatever the developer has configured in her workspace.
  3. Under "Java Compiler", by default "Enable project specific settings" will be checked. Uncheck that, meaning: Use the compiler settings that the developer has selected in her workspace.
  4. When you now switch to the Navigator view, you should find that the ".settings" directory that previously contained project-specific compiler settings is now empty. You can delete it.
After these steps, developers on other operating systems with slightly different java versions will have fever problems when they try to use your Plug-in source. Your MANIFEST.MF can still require a certain execution environment, so you are not loosing much control.

Wednesday, March 2, 2011

Hudson ignored CVS updates

In a setup where Hudson polls CVS for updates I ended up in a situation where newly added directories were ignored, and thus Hudson did not trigger a re-build of the product.

The Hudson "CVS Polling Log" looked like this:

[workspace] $ cvs -q -z0 -n update -PdC -D "Wednesday, March 2, 2011 3:51:38 PM UTC"
cvs update: New directory `.....' -- ignored


The fix was to delete everything inside the "workspace" directory. On the next Hudson run, it performed a complete cvs checkout and that included all changes.