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