Java 9 Modules - Package private and Splitting example
|
Compiling
D:\split-packages>"tree /A /F"
+---core-parser
| \---src
| | module-info.java
| |
| \---parser
| \---xml
| XmlParserUtil.java
|
\---parser-app
\---src
| module-info.java
|
\---parser
\---xml
AppMain.java
D:\split-packages\core-parser>javac -d out src\module-info.java src\parser\xml\XmlParserUtil.java
D:\split-packages\parser-app>javac --module-path ../core-parser/out -d out src\module-info.java src\parser\xml\AppMain.java
src\parser\xml\AppMain.java:1: error: package exists in another module: core.parser
package parser.xml;
^
src\parser\xml\AppMain.java:5: error: cannot find symbol
String data = XmlParserUtil.parse("test data");
^
symbol: variable XmlParserUtil
location: class AppMain
2 errors
The compilation will even fail if the member (XmlParserUtil class in this example) is public instead of package private.
Running on Classpath
Let's compile the application as unnamed modules (using classpath):
D:\split-packages\parser-app>javac -cp ../core-parser/out -d out2 src\parser\xml\AppMain.java
Running:
D:\split-packages\parser-app>java -cp ../core-parser/out;out2 parser.xml.AppMain
parsed data test data
Example Project
Dependencies and Technologies Used:
- JDK 9
- split-packages
- core-parser
- src
- parser
- xml
-
XmlParserUtil.java
-
- xml
-
module-info.java
- parser
- src
- parser-app
- src
- parser
- xml
-
AppMain.java
-
- xml
-
module-info.java
- parser
- src
- core-parser