当前位置: 首页 > 面试题库 >

可怕的java.lang.NoClassDefFoundError

翁和正
2023-03-14
问题内容

我已经浏览了许多有关此错误的现有线程,但仍然没有运气。我什至不打算包装罐子或使用任何第三方包装工具。我只是在Eclipse中运行(效果很好),然后尝试从命令行在其构建位置运行完全相同的应用程序(获取此错误)。我的目标是能够压缩bin文件夹并将其发送出去,以通过命令行脚本由其他人运行。一些细节:

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

让我知道是否有任何其他信息会有所帮助。当然这很简单,但是我在这一点上已经浪费了太多时间。这让我想起了为什么我最初在05左右就离开了Java …


问题答案:

NoClassDefFoundError本质上讲,A 表示该类在编译时位于类路径中,但在运行时不在类路径中。

在您的情况下,java.exe从命令行执行使用时,需要在-cpor
-classpath参数中指定类路径。或者,如果它是一个JAR文件,则需要在class-pathMANIFEST.MF文件条目中指定它。

参数/条目的值可以是包含所有.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


 类似资料:
  • 火出圈的ChatGPT,有多可怕?

  • 指针是C中的一个著名的谜之特性,我会试着通过教授你一些用于处理它们的词汇,使之去神秘化。指针实际上并不复杂,只不过它们经常以一些奇怪的方式被滥用,这样使它们变得难以使用。如果你避免这些愚蠢的方法来使用指针,你会发现它们难以置信的简单。 要想以一种我们可以谈论的方式来讲解指针,我会编写一个无意义的程序,它以三种方式打印了一组人的年龄: #include <stdio.h> int main(int

  • 4.9. 粘合代码和可怕的singleton 一个应用中的大多数代码最好写成依赖注入(控制反转)的风格,这样代码就和Spring IoC容器无关,它们在被创建时从容器得到自己的依赖,并且完全不知道容器的存在。然而,对于少量需要与其它代码粘合的粘合层代码来说,有时候就需要以一种singleton(或者类似singleton)的方式来访问Spring IoC容器。例如,第三方的代码可能试图(以Clas

  • 本文向大家介绍C程序中可怕的野指针图文详解,包括了C程序中可怕的野指针图文详解的使用技巧和注意事项,需要的朋友参考一下 一、疑问点 指针是C语言一个很强大的功能,同时也是很容易让人犯错的一个功能,用错了指针,轻者只是报个错,重者可能整个系统都崩溃了。下面是大家在编写C程序时,经常遇到的一种错误的使用方法,也许在你的学习和工作中就是这样用的,很危险。 实例程序如图1所示: 图1 实例程序 这段程序比

  • 我正在使用font awesome 4.70、angular 6.0.8和cli 6.0.8(下面是完整版本),我正在尝试用cli的“ng build”替换现有的Web包过程。我遇到了一个问题,font Aewome的图标没有显示出来。我在过去的旧版本中也遇到过类似的问题,但我还没有找到解决方案。 我的资源中连接了字体 我将CSS包含在我angula.json的样式部分中 我没有使用“ng ser

  • 可下载字体:被消毒剂拒绝(字体系列:“字体真棒”样式:正常重量:正常拉伸:正常src指数:1)来源:http://192.168.1.254/theme/font-awesome/fonts/fontawesome-webfont.woff2?v=4.6.3http://192.168.1.254/theme/font-awesome/css/font-awesome.min.css第4行 我一直