gpt4 book ai didi

java - 可怕的 java.lang.NoClassDefFoundError

转载 作者:搜寻专家 更新时间:2023-10-31 08:08:07 26 4
gpt4 key购买 nike

我已经查看了许多关于此错误的现有线程,但仍然没有运气。我什至没有尝试打包 jar 或使用任何第三方打包工具。我只是从 Eclipse 中运行(效果很好),然后尝试从命令行运行完全相同的应用程序,在它构建到的相同位置(得到这个错误)。我的目标是能够压缩 bin 文件夹并将其发送给其他人通过命令行脚本运行。一些细节:

  • 这是一个命令行应用程序,我将 commons-lang-2.4.jar 用于字符串实用程序。那是无法定位的文件(特别是“java.lang.NoClassDefFoundError:org/apache/commons/lang/StringEscapeUtils”)
  • 我在我的 lib 文件夹中有那个 jar,并通过右键单击“Build Path -> Add to Build Path”将它添加到我在 Eclipse 中的构建路径
  • .classpath 文件看起来正确并包含对 jar 的引用,但我假设该文件仅由 Eclipse 使用(包含此行:<classpathentry kind="lib" path="lib/commons-lang-2.4.jar"/>)
  • 这可能与 Eclipse 工作目录设置有关吗?我在 src/templates 下创建了一些内部模板文件,我似乎可以看到这些文件的唯一方法是将项目工作目录设置为 AppName/src。也许我应该把它们放在其他地方?

如果有任何其他信息有帮助,请告诉我。当然这很简单,但此时我已经在这上面浪费了太多时间。这让我想起了为什么我最初在 05 年左右离开 Java...

最佳答案

NoClassDefFoundError 基本上意味着该类在编译时在类路径中,但在运行时在类路径中丢失。

在您的情况下,当从命令行使用 java.exe 执行时,您需要在 -cp-classpath 中指定类路径争论。或者,如果它是一个 JAR 文件,那么您需要在其 MANIFEST.MF 文件的 class-path 条目中指定它。

参数/条目的值可以是包含所有 .class 文件的文件夹或单个 .jar 文件的绝对或相对文件系统路径。您可以使用分号 ; 分隔路径。当路径包含空格时,您需要用双引号将特定路径括起来 "。示例:

java -cp .;c:/path/to/file.jar;"c:/spacy path/to/classes" mypackage.MyClass

为了节省每次在命令行中输入和编辑参数的工作量,请使用 .bat 文件。

编辑:我应该意识到您使用的是基于 Unix 的操作系统。上面的示例是针对 Windows 的。对于类似 Unix 的平台,您可以遵循相同的规则,但您需要使用冒号 : 分隔路径,而不是最终的批处理文件,使用 .sh 文件。

java -cp .:/path/to/file.jar:"/spacy path/to/classes" mypackage.MyClass

关于java - 可怕的 java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1702852/

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