JBuilder startup error on Solaris: "/opt/jbuilder4/bin/jbuilder[47]: ./*.config: not found"

By: Josh Fletcher

Abstract: How to fix this JBuilder startup error on Solaris.


Question:

I've just installed JBuilder on Solaris. I've applied all of the Solaris patches required by JDK 1.3. When I try to launch JBuilder, I get the following error:

/opt/jbuilder4/bin/jbuilder[47]: ./*.config: not found.

What is wrong?

 
Answer:

This error is caused by a version of ls that behaves differently than JBuilder expects.

This problem occurs when /usr/ucb/bin is earlier in your shell's path than either /usr/bin or /usr/xpg4/bin. The program /usr/ucb/bin/ls does not return the same error status as the other to versions of ls. If the ucb version is used by the JBuilder startup script, the script will fail.

Basically, JBuilder is attempting to determine if there are any config files in the jbuilder4/lib/ext directory so that it can then load them. The bug is that when there are no config files present (a normal condition for JBuilder Foundation/Personal, but not normal for a complete Enterprise installation) the function attempts to read the wildcard pattern as if it were the filename, i.e. it's trying to open and read filename "*.config", which naturally doesn't exist.

The bug in the JBuilder startup script is that it does not specify a specific version of ls, instead allowing the shell to find it on the path. If the shell finds /usr/ucb/bin/ls, the script's test of the error code will be fooled.

Workarounds:

  • Remove /usr/ucb/bin from your PATH before running JBuilder.
  • Create a one-line ".config" file in the JBuilder /lib/ext directory and place a comment in it, for example:

    # foo workaround to fix a korn script problem

    Save the file, and JBuilder should now launch without difficulty.

  • Delete the offending /usr/ucb/bin/ls binary.

Thanks to Joi Ellis, TeamB for this information.

 

Server Response from: SC3