> the reason you are running into issues is > because the second javac command is essentially compiling a module with > references to types on the class path.
Shouldn't this be supported, though? I.e. is the observed behavior a bug and the contents from the given classpath should actually be available for this compilation (this is how I interpret http://openjdk.java.net/jeps/261)? Or is this behavior intended and the given classpath is ignored in presence of a module-info.java? In that case a warning about the classpath being ignored would be nice. What you suggest works for the given example, I'm not sure how it'd look if the module-info.java had Java 9 specific references (e.g. a provided service). 2017-02-11 18:40 GMT+01:00 Alan Bateman <[email protected]>: > On 10/02/2017 23:06, Gunnar Morling wrote: > >> : >> >> If I don't have a module descriptor things work fine: >> >> javac --source-path=src/main/java -d target/classes --release 8 >> $(find src/main/java -name "*.java") >> javac --source-path=src/main/java9 -cp target/classes -d >> target/classes-java9 --release 9 $(find src/main/java9 -name "*.java") >> jar --create --file mr.jar -C target/classes . --release 9 -C >> target/classes-java9 . >> >> Specifically, the second javac call picks up the (shared) class file >> for "Version" from the classpath by pointing to the output directory >> of the first compilation. >> >> Things fail when adding a module descriptor: >> >> --- src/main/java9/module-info.java >> module com.example { >> } >> --- > > It is complicated but I think the reason you are running into issues is > because the second javac command is essentially compiling a module with > references to types on the class path. > > If you move the module-info.java to the top-level directory directory then I > would expect this should work: > > javac --release 8 -d target/classes src/main/java/com/example/A.java > src/main/java/com/example/Version.java > javac -d target/classes src/main/java/module-info.java > javac -d target/classes-java9 -cp target/classes > src/main/java9/com/example/A.java > jar --create --file mr.jar -C target/classes . --release 9 -C > target/classes-java9 . > > Jon might have other suggestions. > > -Alan
