【发布时间】:2012-07-01 18:43:39
【问题描述】:
我正在使用javassist的HotSwap功能,它需要类路径中的tools.jar,所以我在启动我的OSGi应用程序时添加了-cp tools.jar。但是当我在其中一个包的代码中new HotSwap() 时,
java.lang.NoClassDefFoundError: com.sun.jdi.Bootstrap
被抛出。 com.sun.jdi.Bootstrap 在 tools.jar 中,我已经在类路径中添加了它,并且我验证了它是否有效,因为如果没有,以下代码将不起作用:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
HotSwapper的Classloader无法加载classcom.sun.jdi.Bootstrap?那为什么它在我的 Eclipse 环境中可以正常工作呢?(我在 Build path 的库中添加了 tools.jar)
关于为什么 NoClassDefFoundError,任何线索表示赞赏。
【问题讨论】:
-
osgi 有一个“执行环境”的概念,它是一个包列表。您的 osgi 框架不允许您访问系统包中的内容。
-
在 Eclipse 中运行有点不同,eclipse 更简单,因为它需要所有这些开发人员的东西。
-
@J-16 SDiZ 谢谢,但我怎样才能访问它?因为
HotSwapper需要它。
标签: osgi classloader javassist