java - 为什么这个测试包会失败?

标签 java eclipse osgi

我正在尝试进行一个非常简单的 OSGi 测试,但我无法让它工作。 OSGi 运行时似乎找不到我的激活器类。有什么线索吗?

Activator.java:

package test;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class Activator implements BundleActivator 
{
    public void start(BundleContext context) throws Exception 
    {
        System.out.println("Hello world");
    }


    public void stop(BundleContext context) throws Exception 
    {
        System.out.println("Goodbye World");
    }
}

list .MF

Manifest-Version: 1.0
Bundle-Name: Test
Bundle-SymbolicName: Test
Bundle-Version: 1.0.0
Bundle-Activator: test.Activator
Import-Package: org.osgi.framework

我编译并打包我的激活器

$ javac -classpath /usr/share/java/org.eclipse.osgi.jar Activator.java
$ jar cmf MANIFEST.MF test.jar Activator.class

并运行 OSGi

$ java -jar /usr/share/java/org.eclipse.osgi.jar -console

$ osgi> install file:///home/august/Documents/prog/java/osgi/test/test.jar
Bundle id is 1
$ osgi> start 1
org.osgi.framework.BundleException: The activator test.Activator for bundle Test is invalid
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:171)
...
at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.ClassNotFoundException: test.Activator

最佳答案

您查看过 jar 存档吗?在我看来,您在 jar 命令中缺少“test”文件夹 - 如果 Activator.class 位于 jar 根目录中而不是正确的目录中,则类加载器将找不到它。

关于java - 为什么这个测试包会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10065413/

相关文章:

java - Java中BigDecimal的平方根

java - ant 中正确的组合是什么?

java - 无法从 OSGI 包中获取类型化的类实例

java - 需要 while 循环程序的帮助

osgi - 如何更改 Felix gogo shell 中的默认命令范围?

java - 如何读取 jar 文件,将其转换为字符串并从该字符串创建新的 jar 文件?

java - 尝试用Java创建一个旋转的转轮

java - 内存泄漏与优化

java - JooQ Ant 代码生成不起作用

android - 如何获取 Android 应用程序的 .apk 以在 Eclipse 中分发?