无法从命令行使用Twitter4j运行应用程序

时间:2014-02-07 07:57:36

标签: java command-line classpath twitter4j

我在我的类路径中包含了Twitter4j .jar文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path=""/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
    <classpathentry kind="lib" path="C:/twitter4j-3.0.5/lib/twitter4j-core-3.0.5.jar"/>
    <classpathentry kind="lib" path="C:/twitter4j-3.0.5/lib/twitter4j-stream-3.0.5.jar"/>
    <classpathentry kind="output" path=""/>
</classpath>

我的应用程序通过我的IDE运行正常,但是当我尝试通过命令运行它时抱怨无法找到应该在StatusListener内的twitter4j-stream-3.0.5.jar类:

>java MyTwitterApp
Exception in thread "main" java.lang.NoClassDefFoundError: twitter4j/StatusListener

为了从命令行使用twitter4j运行应用程序,我还需要做些什么吗?

2 个答案:

答案 0 :(得分:0)

您必须在命令行shell类路径中添加twitter4j-core-3.0.5.jartwitter4j-stream-3.0.5.jar

修改

在Windows中

set CLASSPATH=%CLASSPATH%;<Path to>/twitter4j-stream-3.0.5.jar;<Path to>/twitter4j-core-3.0.5.jar;<Path to Directory containing Class files or Start of Package>

在Unix / Mac中

set CLASSPATH=$CLASSPATH:<Path to>/twitter4j-stream-3.0.5.jar:<Path to>/twitter4j-core-3.0.5.jar:<Path to Directory containing Class files or Start of Package>

执行前

java MyTwitterApp

答案 1 :(得分:0)

我在这里找到答案:http://docs.oracle.com/javase/tutorial/essential/environment/paths.html

具体来说,部分说:

  

默认类路径是当前目录。设置CLASSPATH   变量或使用-classpath命令行选项会覆盖它   默认,因此如果要在搜索中包含当前目录   路径,你必须包括“。”在新设置中。

似乎在设置CLASSPATH Windows环境变量时忽略了这一点。我将.添加到我的类路径中,如下所示:

.;C:/twitter4j-3.0.5/lib/twitter4j-core-3.0.5.jar;C:/twitter4j-3.0.5/lib/twitter4j-stream-3.0.5.jar

使用通配符进一步简化此操作,它变为:

.;C:/twitter4j-3.0.5/lib/*

允许我正确使用java MyTwitterApp语法。它查找我正在为项目使用的相关.jar文件,.允许我将当前目录用作所有其他Java应用程序的类路径,因此不会破坏任何兼容性。