这是我第一次使用twitter4j API下载twitter推文。我正在使用Eclipse-
<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依赖项。
我不能提交runnable罐子,因为它太大了。我不知道为什么会出现这种错误,因为我以前使用外部JAR成功运行过其他类似的程序。
我是Maven和Twitter4j的新手,所以我怀疑这可能是一个已知的问题。
我想我找到了解决办法。这似乎是我不知道的一个基本概念。不可运行的项目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类路径变量。