java - Maven: class not found compiling osgi bundle -
i have 3 osgi projects:
projecta (has dependency projectb <scope>provided</scope>
) has class code
... classb b=new classb();
projectb (has dependency projectc <scope>provided</scope>
) has following class:
public class classb extends abstractclassc{ ... }
projectc has following class:
public abstract class abstractclassc{ }
projectb , projectc export necessary packages.
in order:
- i compile projectc - ok.
- i compile projectb - ok.
- i compile projecta - throws abstractclassc not found.
when add in projecta dependency projectc compiles without problem. why happen? understand projecta must compiled 1 dependency projectb. wrong?
i've checked several times abstractclassc not used in projecta , not imported.
first of all, can't make instance of classb
unless know abstractclassc
, code won't compile without reference.
the main problem you're having, though, <scope>provided</scope>
not transitive:
- provided - compile, indicates expect jdk or container provide dependency @ runtime. example, when building web application java enterprise edition, set dependency on servlet api , related java ee apis scope provided because web container provides classes. scope available on compilation , test classpath, , is not transitive.
why using provided
classes you've written yourself? use compile
, fix issue. alternatively, add projectc
dependency projecta
.
Comments
Post a Comment