这是我第一次使用 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/