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:

  1. i compile projectc - ok.
  2. i compile projectb - ok.
  3. 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

Popular posts from this blog

Android : Making Listview full screen -

javascript - Parse JSON from the body of the POST -

javascript - Chrome Extension: Interacting with iframe embedded within popup -