我正在Eclipse中开发一个OSGi组件(Linux上的Oracle JVM 1.8)。 当我通过带有所有必需包的Eclipse Runconfiguration运行组件时,出现以下错误:
ErrorMessage: java.lang.NoClassDefFoundError: sun/awt/image/ByteInterleavedRaster
我的组件导入已编译的boofcv.core.image.ConvertBufferedImage类,该类使用sun.awt.image.ByteInterleavedRaster类。当我检查rt.jar包时,它会列出ByteInterleavedRaster类。
当使用ant部署组件时,一切都运行良好。
由于我不熟悉Java CLASSPATH /编译/ Ant,我不知道我应该为您提供哪些进一步的信息。
清单包含必需的包。 org.boofcv包含ConvertBufferedImage,它找不到ByteInterleavedRaster类。 [编辑]当然是占位符。
Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: [redacted] Bundle-SymbolicName: [redacted];singleton:=true Bundle-Version: 1.0.0 Require-Bundle: org.apache.activemq, [redacted], org.boofcv Bundle-Activator: [redacted] Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Import-Package: org.osgi.framework Export-Package: [redacted] Bundle-ClassPath: .
答案 0 :(得分:3)
默认情况下,sun。*包不适用于OSGi容器中的包。原因是它们不是标准Java API的一部分。它们可能在其他实现中不可用(如IBM JDK)
您可以通过多种方式指定JDK包的可用性:
如果搜索后两个环境变量,您将找到有关该主题的大量信息。