【问题标题】:java.lang.NoClassDefFoundError when running JMS consumer运行 JMS 使用者时出现 java.lang.NoClassDefFoundError
【发布时间】:2010-10-15 23:26:04
【问题描述】:

我正在尝试运行我制作的课程,但出现此错误:

线程“main”中的异常 java.lang.NoClassDefFoundError: javax/jms/目标

即使我在类路径中包含必要的 jar,我也不明白为什么它不起作用:

java consumer1 -cp activemq-all-5.3.2.jar

【问题讨论】:

  • activemq-all-5.3.2.jar和consumer1在同一个目录吗?
  • 你检查过activemq-all-5.3.2.jar 确保它有那个类吗? (可能是损坏的工件)您可以执行 'jar tvf activemq-all-5.3.2.jar' 来查看。
  • 我通过在eclipse中扩展jar来检查它。它就在那里。

标签: java jms activemq


【解决方案1】:

java 命令的-cp 选项应该放在类名之前:

java -cp .;activemq-all-5.3.2.jar consumer1

否则,它将被视为您的 main 方法的参数,而不是 java 的参数。另请注意,如果您使用-cp 选项指定类路径,则需要包含当前目录才能从中运行.class 文件。

【讨论】:

  • 我之前在类名前加了-cp选项。这次唯一的不同是我添加了这个“.;”这意味着什么?要将当前文件夹中的所有内容都包含在类路径中?我不明白为什么在当前文件夹中没有依赖项时需要这样做。
  • @Jeune:当您运行java consumer1 时,consumer1 是类路径中的类名称。默认情况下,类路径是当前目录,所以这个命令将从它运行consumer1.class。当您使用 -cp 选项时,您会覆盖默认的类路径,因此您需要显式指定当前文件夹以便从中运行 consumer1.class
  • 注意:在 Linux 上,您需要 : 而不是 ; 作为分隔符。把我逼疯了。
猜你喜欢
  • 2014-09-15
  • 2019-02-21
  • 2020-12-27
  • 2013-08-27
  • 2022-10-02
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 2011-10-23
相关资源
最近更新 更多