So, I have the following setup in Eclipse (Java):
- I have a project (lets call this “project 1”) which provides an interface (which is package private)
- I have another project (“project 2”) which contains a package from project 1… Classes in this package extend the package private interfaces in “project 1” and provide a nice public interface.
- Now, I have “project 3” which references “project 2”. Project 3 then uses the public object provided in project 2.
Upon calling the constructor from project 2 in project 3, I get the following:
“the type {—} cannot be resolved. it is indirectly referenced from required .class files”
If I add a reference to project 1 from project 3, all is well. Is there a way to NOT have to reference project 3 in this way though? It really doesn’t make sense to reference it.
I’m using Eclipse (Helios) with the most recent JDK etc…
This is a “transitive dependency”. You need on your classpath all classes that are required by any class you use. So you need to have the classes from project 1 in the classpath somehow – you can package them as a
.jar, for example. Or you can go toBuild Path > Order and Exportof Project 2, and mark Project 1 as exported.An important thing here is that the project dependencies are a mere development “goodie” – when you execute the program standalone (or deploy it to container), the Eclipse project dependencies are gone. So you must ensure your dependencies are met.