Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make an internal Java package accessible in Eclipse?

I have a legacy Java (8) project opened in Eclipse with Java 11 (or Java 10). Eclipse is now rightly complaining about inaccessible packages. E.g. com.apple.laf.AquaComboBoxUI.

When compiling from command line I can make those packages accessible explicitly by adding a parameter to javac:

--add-exports java.desktop/com.apple.laf=ALL-UNNAMED

Is there a way to do the same from inside the Eclipse IDE? I tried to add an accessible rule on the JDK library. But that seems to have no effect. Any ideas?

And yes, I know, we should migrate the project to use only official APIs. But that's a long, long way...

like image 447
Michael Avatar asked Sep 15 '18 10:09

Michael


2 Answers

I'm answering my own question, since I found a solution.

  1. In Eclipse settings navigate to: Java Build PathLibrariesModulepathJRE System Library
  2. Expand it and double click on: Is modular (modifies encapsulation)
  3. Switch to Details tab
  4. Add a new export: E.g. java.desktopcom.apple.laf
like image 193
Michael Avatar answered Oct 20 '22 22:10

Michael


You need to setup problem severity. This falls under forbidden reference (access rules) under Java Compiler -> Errors/Warnings.

like image 43
Dakshinamurthy Karra Avatar answered Oct 20 '22 22:10

Dakshinamurthy Karra