Error message when accessing non-public type

Alex Buckley alex.buckley at oracle.com
Wed Jun 22 01:11:37 UTC 2016


Hi Gunnar,

A question for you about Hibernate accessing non-exported types, in 
connection with your fascinating blog entry 
http://in.relation.to/2016/06/17/bean-validation-and-the-jigsaw-liaison/

The user module com.example.acme 'provides' a secret implementation of 
javax.validation.ConstraintValidator. The RI module 
org.hibernate.validator.engine 'uses' ConstraintValidator. Great -- 
until code in the RI module tries to instantiate the secret 
implementation class directly, and gets an IAE. Why isn't the RI module 
letting ServiceLoader instantiate custom constraint validators on its 
behalf?

(Earlier, the API module javax.validation was happy to have 
ServiceLoader instantiate validation providers on its behalf.)

Alex

On 6/15/2016 3:24 AM, Gunnar Morling wrote:
> Hi,
>
> When referring to a not-exported type from another module, I'm getting this
> rather generic compilation error:
>
>      package someprivate.pakkage does not exist
> import someprivate.pakkage.SomeType;
>                                                ^
>      error: cannot find symbol SomeType
>
> As if the type was not existing at all. As per this blog post [1], a more
> specific error used to be raised in previous EA builds:
>
>      error: SomeType is not visible because
>      package someprivate.pakkage is not visible
>
> I found that previous error more helpful, as it gives an indication of what
> to do in order to prevent it. Has this been changed intentionally? Or am I
> doing something wrong here?
>
> Thanks,
>
> --Gunnar
>
> [1]
> https://blog.codecentric.de/en/2015/11/first-steps-with-java9-jigsaw-part-1/
>


More information about the jigsaw-dev mailing list