8

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.

Lii
  • 11,553
  • 8
  • 64
  • 88
alostale
  • 770
  • 1
  • 11
  • 21
  • 1
    Possible duplicate of [What is the replacement for javax.activation package in java 9?](https://stackoverflow.com/questions/46493613/what-is-the-replacement-for-javax-activation-package-in-java-9). The reason of it being Deprecated and Upgradeable. – Naman Oct 17 '17 at 16:26
  • 1
    @nullpointer That is not a duplicate of this question. – Mark Rotteveel Oct 17 '17 at 18:28
  • 1
    In that case, could you share the Run configurations of Eclipse in use with project settings along with? – Naman Oct 17 '17 at 21:16
  • @nullpointer `java.activation` module was just an example of what I needed, I've added another module for the same. Also I included a [link](https://github.com/alostale/test-j9-eclipse) to the testing code I'm using with all Eclipse settings. – alostale Oct 18 '17 at 07:58

1 Answers1

3

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.

Stephan Herrmann
  • 7,963
  • 2
  • 27
  • 38