I have some legacy Java code, ie.:
package org.alo.test.j9;
import javax.activation.DataHandler; // in java.activation module
import javax.annotation.PostConstruct; // in java.xml.ws.annotation module
public class OldClass {
public static void main(String[] args) {
DataHandler dh = new DataHandler(null, null);
System.out.println(dh);
}
}
That is not yet modularized so it requires to use --add-modules
to compile it with Java 9.
$ javac -version
javac 9
$ javac org/alo/test/j9/OldClass.java
src/org/alo/test/j9/OldClass.java:3: error: package javax.activation is not visible
import javax.activation.DataHandler; // in java.activation module
^
(package javax.activation is declared in module java.activation, which is not in the module graph)
src/org/alo/test/j9/OldClass.java:4: error: package javax.annotation is not visible
import javax.annotation.PostConstruct; // in java.xml.ws.annotation module
^
(package javax.annotation is declared in module java.xml.ws.annotation, which is not in the module graph)
2 errors
I need to add the modules I'm using in order to be able to successfully compile:
$ javac org/test/OldClass.java --add-modules=java.activation,java.xml.ws.annotation
I want to compile it in Eclipse (using Oxygen.1a) with Java 9. But I get The import javax.activation cannot be resolved
compilation error.
How can I tell the eclipse compiler to add these modules? I didn't find any tip in Eclipse documentation about it.
Here you can find a simple eclipse project I'm testing with.
Import an Eclipse project as a module From the main menu, select File | New | Module from Existing Sources. In the dialog that opens, select the directory in which your sources, libraries, and other assets are located and click Open. Select Import module from external model | Eclipse and click Next.
Module is a uniquely named reusable group of related packages, as well as resources and a module descriptor (module-info.java) All JDK Modules starts with "jdk. *". All Java SE Specifications Modules starts with "java.
Complete documentation for these features still needs to be written, but a start has been made in the New & Noteworthy for Photon M3 (work in progress). The functionality you are looking for is mentioned in the paragraph starting with
On the Contents tab individual modules inside a container like JRE System Library can be included or excluded by moving the module from left-to-right or vice versa ...
This dialog tab combines effects of --add-modules
and --limit-modules
.
Edit: In Eclipse 2019-06 the UI mentioned above has been revamped. Up-to-date documentation can be found in the online help.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With