Java Apache Felix OSGI中不存在包

Java Apache Felix OSGI中不存在包,java,osgi,apache-felix,Java,Osgi,Apache Felix,我一直在试用ApacheFelix和osgi的一些示例。我制作了服务(服务提供者)接口并实现了它。之后,我设法创建一个jar文件,其中包含通过清单文件提供的相关信息。接下来,我需要为消费者部分打包一个jar文件。但是,当我试图编译消费者部分时,它会给出一个错误,因为包不存在。我需要将接口导入使用者(服务使用者) 这是我的代码(服务消费者的Activator.java) 导入mtitassignmentone.serviceprovider.service.BookService它是编译时抛出的错

我一直在试用ApacheFelix和osgi的一些示例。我制作了服务(服务提供者)接口并实现了它。之后,我设法创建一个jar文件,其中包含通过清单文件提供的相关信息。接下来,我需要为消费者部分打包一个jar文件。但是,当我试图编译消费者部分时,它会给出一个错误,因为包不存在。我需要将接口导入使用者(服务使用者)

这是我的代码(服务消费者的Activator.java)


导入mtitassignmentone.serviceprovider.service.BookService它是编译时抛出的错误。但那个文件是存在的。如何克服这个问题?

似乎您的Activator.java文件在导入包时遇到了一些问题。有时,当您在用于创建服务提供程序的清单文件末尾没有保留一个空行s\pace时,就会发生这种情况

另一个原因是您创建的包有问题(显然是:D)。这个问题可以通过从像eclipse这样的IDE创建包来解决。或者,您可以通过cmd执行以下操作:

从项目的根目录:

javac src/com/osgi/services/*.java
要运行,假设没有其他依赖项:

java -cp ./src com.osgi.services.MyService
(假设MyService具有正常的主功能。)

javac命令编译包目录中的所有.java文件。因为它们都在同一个包/目录中,所以这是可行的。它还将生成的.class文件放在同一个目录中,这可能是您想要的,也可能不是您想要的

要将它们放在不同的目录中,请使用-d选项并提供路径

javac -d bin src/com/osgi/services/*.java
然后运行:

java -cp ./bin com.osgi.services.MyService

似乎您的Activator.java文件在导入包时遇到了一些问题。有时,当您在用于创建服务提供程序的清单文件末尾没有保留一个空行s\pace时,就会发生这种情况

另一个原因是您创建的包有问题(显然是:D)。这个问题可以通过从像eclipse这样的IDE创建包来解决。或者,您可以通过cmd执行以下操作:

从项目的根目录:

javac src/com/osgi/services/*.java
要运行,假设没有其他依赖项:

java -cp ./src com.osgi.services.MyService
(假设MyService具有正常的主功能。)

javac命令编译包目录中的所有.java文件。因为它们都在同一个包/目录中,所以这是可行的。它还将生成的.class文件放在同一个目录中,这可能是您想要的,也可能不是您想要的

要将它们放在不同的目录中,请使用-d选项并提供路径

javac -d bin src/com/osgi/services/*.java
然后运行:

java -cp ./bin com.osgi.services.MyService

谢谢,我使用eclipse创建了现在可以工作的包。我使用eclipse创建了现在可以工作的包