Menu

#857 Classes recompiled though not required

open
nobody
5
2004-08-05
2004-08-05
Anonymous
No

If the ex.Foo class contains a reference to the ex.Bar class, then jikes recompiles the ex.Bar class when compiling the ex.Foo class - even if the ex.Bar class is already compiled and need not be resompiled.

Oddly enough this is not a problem if classes Foo and Bar are compiled in the ex-package directory.

Classes and system info below. The problem is quite similar to that reported in bug #2744.

# uname -a
Linux localhost.localdomain 2.6.5 #2 Sun Apr 18 19:35:15 CEST 2004 i686 i686 i386 GNU/Linux

# jikes -version
Jikes Compiler - Version 1.21 - 16 May 2004

# cat ex/Bar.java
package ex;

public class Bar {
int i;
}

# cat ex/Foo.java
package ex;

public class Foo {

private Bar b;

}

# ls -lrt ex/
-rw-r--r-- 1 eiler users 43 Aug 5 10:21 Bar.java
-rw-r--r-- 1 eiler users 53 Aug 5 10:21 Foo.java

# jikes ex/Bar.java

# ls -lrt ex/
-rw-r--r-- 1 eiler users 43 Aug 5 10:21 Bar.java
-rw-r--r-- 1 eiler users 53 Aug 5 10:21 Foo.java
-rw-r--r-- 1 eiler users 203 Aug 5 10:35 Bar.class

# jikes ex/Foo.java

# ls -lrt ex/
-rw-r--r-- 1 eiler users 43 Aug 5 10:21 Bar.java
-rw-r--r-- 1 eiler users 53 Aug 5 10:21 Foo.java
-rw-r--r-- 1 eiler users 210 Aug 5 10:35 Foo.class
-rw-r--r-- 1 eiler users 203 Aug 5 10:35 Bar.class

As can bee seem from the directory listing ex.Bar was recompiled!

Recompiling in the ex-package directory:

# cd ex/
# jikes --classpath .. Foo.java
# ls -lrt
-rw-r--r-- 1 eiler users 43 Aug 5 10:21 Bar.java
-rw-r--r-- 1 eiler users 53 Aug 5 10:21 Foo.java
-rw-r--r-- 1 eiler users 203 Aug 5 10:35 Bar.class
-rw-r--r-- 1 eiler users 210 Aug 5 10:39 Foo.class

Compiling with absolut paths rather than relative also resolves the problem.

Discussion


Log in to post a comment.