Java problems
I get an java.lang.UnsatisfiedLinkError link error
when using java on Linux:
Exception in thread "main" java.lang.UnsatisfiedLinkError:
/usr/share/j2re1.4.1_01/lib/i386/libfontmanager.so:
libstdc++-libc6.1-1.so.2: cannot open shared object file:
No such file or directory
Why doesn't the java install have the files it needs?
You need to install
libstdc++2.9-glibc2.1. Unlike libc,
the libc++ libraries are not quite standardized so
backward-compatibility can get broken during upgrades.
Why does java not allow packages from java.lang
when I'm connecting from another machine? I get an unmarshaling error:
java.rmi.UnmarshalException: Error unmarshaling return; nested
exception is:
java.lang.SecurityException: Prohibited package name: java.lang
java.lang.SecurityException: Prohibited package name:
java.lang
<exception cut here>
When mixing different
versions of java, the java security manager on the java VM where the
catalog is running decides that one version is trying to override the
restricted packages. It's not actually true, but that's why it
happens. You can prevent this from happening by running the catalog
on the lowest version of java that you are mixing together. This
usually happens with the iPaq handheld platform
(
H21). So if you have a machines
running jdk1.3.1, 1.4.0 and 1.4.1_beta, the catalog must be run on
1.3.1.
Database issues
Why do I see "Cannot connect to server on port
3306"?
MySQL is not setup currently for networking or not
running. edit /etc/mysql/my.conf and comment out skip-networking
(use the # symbol). If MySQL is not running use '/etc/init.d/mysql
start' to start it.
In Windows, use "WinMySQLadmin.exe" and in the
"Variables" section, change skip_networking to
OFF. Also make sure the server is running: The traffic light
should be green.
Why is access denied for users 'x@foo' or '@foo'
on my database?
The user isn't allowed to work with that database.
Typical problems will be an incorrect password was used, that the
user doesn't exist in the database or that user doesn't have
permission to access the database table you are trying to use.
iPaq installation
Where can I find more information on iPaqs and
Metaglue
What kind of package is a .ipk?
The ipkg (*.ipk) install file is the format for
Familiar Linux. The format is based loosely on the Debian package
format. For more information on Familiar Linux see
Handhelds.org.
Other important iPaq information can be found at the
Oxygen H21. This page contains
information on the oxygen ipaq feeds (package directories) as well as
useful links.
Catalog connections
When running Metaglue on multiple hosts, why
can't I connect to the catalog running on another machine?
Why do I get a strange "start a Metaglue host on
xxx" message when I'm on that host already?
Look at the catalog startup messages, if you see
"-cat=127.0.0.1" then here's what is happening. We use the hostname
of the machine to determine the ip address. If the hostname is set to
be equivalent to "localhost", then the address will come back as
127.0.0.1. To fix this, make sure that
hostname != localhost . You'll need properly named
machines to use multiple hosts with Metaglue.
On Linux, look at /etc/hosts and make sure that
hostname is not on the same line as
localhost. If your network is static, you will want a
line containing the correct ip address and hostname. If you have a
DNS server or DHCP with DDNS, you shouldn't need to have the
hostname line. Check with a sysadmin before tromping on
the network.
On Windows, if you ping your hostname or use
ipconfig and your ip is 127.0.0.1, then you should be able to use the
"Network Settings" applet to say you have a network ip address other
than "127.0.0.1" or setup for DHCP. Check with a sysadmin for the
correct ip address if you have a static ip network
I tried to start the catalog and got a
java.net.MalformedURLException that looked like:
rmi://localhost:1099/UberSociety:metaglue.Metaglue-10.129.6.109%10.129.6.109{eff053887e}
saying the catalog URL was bad. Why doesn't RMI like Metaglue?
Somehow you've managed to get a much older version
of Metaglue or it's agents and are trying to use it on java 1.4.
This has to do with the structure of RMI changing from java 1.3 to
java 1.4. You should get the newest version of metaglue from our
download page.
Adding new agents
I've created a new agent, how do I register it?
Metaglue works by using java's class-loader. This
means the package that contains your agents only needs to be included
in the classpath for them to be found by Metaglue. It's still up to
you to make them work correctly. :-)
My new agent will not load. Why does the PowerTester ask to expand
my agent's name?
Why won't my agent load from the command line?
I keep seeing: ClassNotFoundException: Unable to locate
util.PromptBoxAgent in ChainingClassLoader
This comes when you are trying to run java classes
which are not agents. If this is an agent, did you run rmic
to when compiling along with javac? Check to see that with
the file <AgentName>.class there is also
<AgentName>_Skel.class and <AgentName>_Stub.class. If not,
then rmic didn't run.
X10 devices
When I try to use lights (or other X10 devices),
I get AbstractClass or Interface errors. Why does this happen?
If you're using the Namer resource manager
(agentland.resource.namer.Namer) then you want to add
agentland.output.X10 to the watched occupations list.
This is accomplished easily by loading Namer in the PowerTester.