Subject: mighty wierd JDK14 / NFS bug
To: None <netbsd-users@netbsd.org>
From: Rasputin <rasputin@idoru.mine.nu>
List: netbsd-users
Date: 09/05/2002 10:00:36
This is a long shot, but has anyone got any idea what's happening here?
It seems to me like the Linux Java ports have really strange problems with
NFS-mounts.
I can replicate this using Suns jdk 13 and 14 under Linux emulation
(latest copies under pkgsrc)
my classpath = ~/.classpath
I have two classes in package idoru.games.ttt, Board and Square
[framework for a very simple game, I'm trying to write a distributed games
system and am starting small :) ], inside
~/.classpath/idoru/games/ttt/
both classes are public
java (the runtime) can see them both
(because Board is basically an array of 9 Square object and I can use that fine).
However, javap *will not* see Square - see output below,
*unless* I put it somewhere other than /home/rasputin
(which is NFS mounted from a Sparc20 running current).
Any ideas why?
It's related to the NFS mount, I'm sure of it, because if I put the classes
into ~/tmp instead of /tmp and rest the CLASSPATH,
I get the same problem with javap.
I've just fixed this by moving the classes off the NFS mount,
but for the life of me I can't think why one file would be affected when
others aren't.
Sorry for spamming a really obscure issues, but this has driven me potty for
the last two days and if there's a bug somewhere in our NFS-implementation,
I'd like to help fix it.
--------------8<----------------
1rasputin@idoru:.classpath$ java -version
java version "1.4.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-b92)
Java HotSpot(TM) Client VM (build 1.4.0-b92, mixed mode)
1rasputin@idoru:.classpath$ which java
/usr/pkg/java/sun-1.4.0/bin/java
1rasputin@idoru:.classpath$ which javap
/usr/pkg/java/sun-1.4.0/bin/javap
1rasputin@idoru:.classpath$ pwd
/home/rasputin/.classpath
1rasputin@idoru:.classpath$ echo $CLASSPATH
/home/rasputin/.classpath
1rasputin@idoru:.classpath$ ls -l idoru/games/ttt/Square.class
-rw-r--r-- 1 rasputin rasputin 890 Sep 3 17:14 idoru/games/ttt/Square.class
1rasputin@idoru:.classpath$ ls -l idoru/games/ttt/Board.class
-rw-r--r-- 1 rasputin rasputin 1219 Sep 3 17:00 idoru/games/ttt/Board.class
1rasputin@idoru:.classpath$ javap idoru.games.ttt.Board
Compiled from Board.java
public class idoru.games.ttt.Board extends java.lang.Object {
public static int SQUARES;
idoru.games.ttt.Square squares[];
public idoru.games.ttt.Board(int);
public idoru.games.ttt.Board();
public void mark(int, int) throws java.lang.Exception;
public void read(int[]);
public void fillme(idoru.games.ttt.Fillable);
}
1rasputin@idoru:.classpath$ javap idoru.games.ttt.Square
Class 'idoru.games.ttt.Square' not found
1rasputin@idoru:.classpath$ mount|grep /home/rasputin
nailbunny.tenten:/home/rasputin on /home/rasputin type nfs (nosuid, nodev)
1rasputin@idoru:.classpath$ cp -R idoru /tmp/idoru
1rasputin@idoru:.classpath$ export CLASSPATH=/tmp
1rasputin@idoru:.classpath$ javap idoru.games.ttt.Square
Compiled from Square.java
public class idoru.games.ttt.Square extends java.lang.Object {
public static final int E;
public static final int X;
public static final int O;
public idoru.games.ttt.Square();
public void mark(int) throws java.lang.Exception;
public int read();
}
1rasputin@idoru:.classpath$ javap idoru.games.ttt.Board
Compiled from Board.java
public class idoru.games.ttt.Board extends java.lang.Object {
public static int SQUARES;
idoru.games.ttt.Square squares[];
public idoru.games.ttt.Board(int);
public idoru.games.ttt.Board();
public void mark(int, int) throws java.lang.Exception;
public void read(int[]);
public void fillme(idoru.games.ttt.Fillable);
}
--------------8<----------------
--
Rasputin :: Jack of All Trades - Master of Nuns