Javac ignores module-info dependencies

Mike Ershov mikhail.ershov at oracle.com
Tue Jan 24 07:36:14 PST 2012


Sorry again, attachments are prohibited here. The code:

==== files
./make.sh
./srcmod/mod2/p2/Main.java
./srcmod/mod2/module-info.java
./srcmod/mod1/p1/C.java
./srcmod/mod1/module-info.java

==== make.sh
#!/bin/sh
JIGSAW=/opt/java/j8/bin
SRC=srcmod/

rm -rf classes
mkdir classes
rm -rf mlib

$JIGSAW/jmod create -L mlib
$JIGSAW/javac -d classes -modulepath mlib -sourcepath $SRC `find $SRC 
-name '*.java'`
$JIGSAW/jpkg -m classes/mod1 jmod mod1
$JIGSAW/jpkg -m classes/mod2 jmod mod2
$JIGSAW/jmod install -L mlib mod1 at 1.0.jmod
$JIGSAW/jmod install -L mlib mod2 at 1.0.jmod
$JIGSAW/java -L mlib -m mod2 

==== srcmod/mod1/module-info.java
module mod1 @1.0 {
    requires jdk.base;
}

==== srcmod/mod1/p1/C.java
package p1;

public class C {
   public void say() {
      System.out.println("Hello, bug!"); 
   }
}

==== srcmod/mod2/module-info.java
module mod2 @1.0 {
    requires jdk.base;
    class p2.Main;
}

==== srcmod/mod2/p2/Main.java
package p2;
import p1.C;

public class Main {
   public static void main(String[] args) {
      new C().say(); 
   }
}



Mike Ershov wrote:
> Sorry for inconvenience, trying to resend with attachment.
>
> Mike
>
> Mike Ershov wrote:
>> Hello,
>>
>> I noticed that javac does not take requires part of module-info as
>> compile class path. Is it correct behavior?
>> I have sources for two modules under one source root -
>> m1 and m2. m2 uses class from m1 but m2's module-info has no "requires
>> m1" statement. I expected compile-time error, but a compilation is
>> successful and I see runtime error. The code is attached.
>>
>> Sorry in advance if this is known issue.
>>
>> Thanks,
>> Mike
>>
>




More information about the jigsaw-dev mailing list