java.lang.NoClassDefFoundError : twitter4j/TwitterException

标签 java eclipse maven jar twitter4j

这是我第一次使用 twitter4j API 下载 twitter 推文。我正在使用 Eclipse->Maven 设置 twitter4j-core-4.0.4.jar 的依赖关系。

<dependency>
        <groupId>org.twitter4j</groupId>
        <artifactId>twitter4j-core</artifactId>
        <version>4.0.4</version>
</dependency>

我在远程大学 UNIX 系统上运行我的项目 jar。 我的可运行 jar (27MB) 运行良好,没有任何问题,但我的不可运行 jar (10KB) 失败并出现以下错误。

Exception in thread "main" java.lang.NoClassDefFoundError: twitter4j/TwitterException
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2570)
        at java.lang.Class.getMethod0(Class.java:2813)
        at java.lang.Class.getMethod(Class.java:1663)

项目的“Java 构建路径”属性中的“库”和“顺序和导出”部分确实包含 Maven 依赖项。

我无法提交可运行的 jar,因为它太大。我不确定为什么会出现错误,因为我之前已经使用外部 jar 成功运行了其他类似的程序。

我是 Maven 和 Twitter4j 的新手,所以我怀疑这可能是一个已知问题。

最佳答案

我想我已经找到了解决方案。看来这是一个我没有意识到的基本概念。不可运行的项目 jar 在运行时无法访问其外部 jar 依赖项。必须使用类路径变量特别提及 jar 位置。就我而言,由于我在 unix 上使用 hadoop 来执行 jar,所以我执行了以下操作并且它有效。

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/home/005/s/ss/ssp151830/twitter4j-core-4.0.2.jar

如果您只使用普通 java,则更新 java 类路径变量。

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

相关文章:

java - 将时间字符串转换为没有日期的时间对象

java - 外部化属性工作但不覆盖内部属性中的现有默认值

java - Maven 版本 :prepare goal

maven - Gradle自定义编译

java - 让 Eclipse 与 JPMS 和 Maven 良好配合

mysql - Eclipse JPA 和 MySQL - JPA 方面的通用与 Eclipse Link 平台

java - KARAF OSGI bundle 上的自定义 hibernate.cfg.xml 位置

java - 错误与removeAt java arraylist android

java - 如何找到最大值的数组索引?

java - 更新 Gradle 项目库