java.lang.NoClassDefFoundError:twitter4j / TwitterException

时间:2016-02-02 03:55:07

标签: 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。 我的runnable 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)

&#34;图书馆&#34;和&#34;订单和出口&#34; &#34; Java构建路径&#34;项目的属性确实包含Maven依赖项。

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

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

1 个答案:

答案 0 :(得分:1)

我想我得到了解决方案。这似乎是我不了解的一个基本概念。非runnable项目jar在运行时期间无法访问其外部jar依赖项。必须使用classpath变量专门提到jar位置。在我的情况下,因为我在unix上使用hadoop来执行jar,所以我做了下面的工作。

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

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