gpt4 book ai didi

java - 从 Eclipse 启动时出现 NoClassDefFoundError,但在 Ant 中工作正常

转载 作者:行者123 更新时间:2023-12-01 22:51:41 25 4
gpt4 key购买 nike

我正在 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/compiling/Ant 不太熟练,所以我不知道应该为您提供哪些进一步的信息。

<小时/>

list 包含所需的 bundle 。org.boofcv包含ConvertBufferedImage,找不到ByteInterleavedRaster类。 [redacted] 当然是一个占位符。

    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: .

最佳答案

默认情况下,sun.* 软件包不可用于 OSGi 容器中的 bundle 。原因是它们不是标准 Java API 的一部分。它们可能在其他实现(例如 IBM JDK)中不可用

您可以通过多种方式指定 JDK 包的可用性:

  • 创建自定义 java 配置文件(搜索 osgi.java.profile)
  • 使用 org.osgi.framework.system.packages 指定软件包列表
  • 使用 org.osgi.framework.system.packages.extra 环境变量指定其他包

如果您搜索后两个环境变量,您将找到有关该主题的许多信息。

关于java - 从 Eclipse 启动时出现 NoClassDefFoundError,但在 Ant 中工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24652462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com