I have the following project structure:
<code>myProject
|- fooModule
| |- src
| |- fooModulePckg
| | |- somePckg
| | |- Foo.java
| |- module-info.java
|
|- barModule
| |- src
| |- barModulePckg
| | |- somePckg
| | | |- Bar.java
| | |- otherPckg
| | |- Other.java
| |- module-info.java
|- mainModule
| |- src
| |- mainModulePckg
| | |- Main.java
| |- module-info.java
</code>
<code>myProject
|- fooModule
| |- src
| |- fooModulePckg
| | |- somePckg
| | |- Foo.java
| |- module-info.java
|
|- barModule
| |- src
| |- barModulePckg
| | |- somePckg
| | | |- Bar.java
| | |- otherPckg
| | |- Other.java
| |- module-info.java
|- mainModule
| |- src
| |- mainModulePckg
| | |- Main.java
| |- module-info.java
</code>
myProject
|- fooModule
| |- src
| |- fooModulePckg
| | |- somePckg
| | |- Foo.java
| |- module-info.java
|
|- barModule
| |- src
| |- barModulePckg
| | |- somePckg
| | | |- Bar.java
| | |- otherPckg
| | |- Other.java
| |- module-info.java
|- mainModule
| |- src
| |- mainModulePckg
| | |- Main.java
| |- module-info.java
The module-info.java
contets are the following:
<code>module fooModule{
exports fooModulePckg.somePckg;
}
</code>
<code>module fooModule{
exports fooModulePckg.somePckg;
}
</code>
module fooModule{
exports fooModulePckg.somePckg;
}
<code>module barModule{
requires transitive fooModule;
exports barModulePckg.somePckg;
exports barModulePckg.otherPckg;
}
</code>
<code>module barModule{
requires transitive fooModule;
exports barModulePckg.somePckg;
exports barModulePckg.otherPckg;
}
</code>
module barModule{
requires transitive fooModule;
exports barModulePckg.somePckg;
exports barModulePckg.otherPckg;
}
<code>module mainModule{
requires transitive barModule;
}
</code>
<code>module mainModule{
requires transitive barModule;
}
</code>
module mainModule{
requires transitive barModule;
}
The Main.java
uses the Bar class that uses the Other class.
I am trying to compile the project from the same directory as myProject
is in with the following commands:
<code>javac -d build/fooModule myProject/fooModule/src/*.java myProject/fooModule/src/fooModule/somePckg/*.java
javac -d build/barModule --module-path build/fooModule;build/barModule myProject/barModule/src/*.java myProject/barModule/src/barModule/somePckg/*.java myProject/barModule/src/barModule/otherPckg/*.java
javac -d build/mainModule --module-path build/fooModule;build/barModule;build/mainModule myProject/mainModule/src/*.java myProject/mainModule/src/mainModulePckg/*.java
</code>
<code>javac -d build/fooModule myProject/fooModule/src/*.java myProject/fooModule/src/fooModule/somePckg/*.java
javac -d build/barModule --module-path build/fooModule;build/barModule myProject/barModule/src/*.java myProject/barModule/src/barModule/somePckg/*.java myProject/barModule/src/barModule/otherPckg/*.java
javac -d build/mainModule --module-path build/fooModule;build/barModule;build/mainModule myProject/mainModule/src/*.java myProject/mainModule/src/mainModulePckg/*.java
</code>
javac -d build/fooModule myProject/fooModule/src/*.java myProject/fooModule/src/fooModule/somePckg/*.java
javac -d build/barModule --module-path build/fooModule;build/barModule myProject/barModule/src/*.java myProject/barModule/src/barModule/somePckg/*.java myProject/barModule/src/barModule/otherPckg/*.java
javac -d build/mainModule --module-path build/fooModule;build/barModule;build/mainModule myProject/mainModule/src/*.java myProject/mainModule/src/mainModulePckg/*.java
Afther this, I am trying to run Main.class:
<code>java Main
</code>
<code>java Main
</code>
java Main
but even if I succeed, it will throw a ClassNotFoundException
, saying that it could not locate the Other
class.
What am I missing? How should I create my classpath?