【问题标题】:NoClassDefFoundError when runnable jar可运行 jar 时出现 NoClassDefFoundError
【发布时间】:2015-09-18 17:40:20
【问题描述】:

大家好,我已将 Webcam-Capture API 包含在我的项目中。

当我在 Netbeans 中运行它时,一切正常。但是当我将所有内容编译成一个可运行的 jar 时,我会收到这条消息,试图通过 cmd 行运行它。

你们中的任何人都可以帮助我吗?

我已经尝试解除绑定并重新绑定所有 jar 并更改 jdks,但它不起作用

【问题讨论】:

标签: java netbeans jar noclassdeffounderror classnotfoundexception


【解决方案1】:

在命令行中添加 -classpath 标志,指向 Webcam-Capture API 在文件系统中存在的路径,除非您想创建单个包可执行文件。在您的情况下,它应该如下所示

java  -classpath YOURJAR.jar;folder_of_dependant_jar/*;. com.awesome.pagackage.Starter

其中 YOURJAR.jar 包含 com.awesome.pagackage.Starter.main(String args[])

您还提到您的 jar 是一个可运行的 jar,这也意味着在导出/构建时您可以执行以下方式之一。(注意,此功能在 eclipse 中,但您会明白的)。您在库处理中看到的以下选项会执行特定的操作。

第一个选项:将依赖jar作为java打包提取到目标jar中。这意味着如果你的包是com.awesome.package并且依赖jar有包logic.package; ,在构建可运行的 jar 之后,您可以发现这两个包都存在于您的 jar 文件中。

第二个选项:我认为它更多是针对 eclipse 的,因为 eclipse 添加了一些自己的可运行生成类,所以我不在这里解释它。

第三个选项:是最有趣的一个。它创建如下文件夹结构

ndon_lib\external.jar(外部 jar 文件) ndon.jar (你的 jar 文件)

这次 manifest.mf 文件包含如下内容。

Class-Path: . ndon_lib/external.jar
Main-Class: com.awesome.pagackage.Starter

【讨论】:

    【解决方案2】:

    你应该设置类路径

    java -cp "your.jar"  "yourclass"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-28
      • 2013-04-26
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      相关资源
      最近更新 更多