2014-02-07 62 views
0

我已经包括Twitter4j .jar文件在我的类路径这样运行的应用程序:无法与Twitter4j命令行

<?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命令行应用程序呢?

回答

0

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

具体来说,说部分:

The default class path is the current directory. Setting the CLASSPATH variable or using the -classpath command-line option overrides that default, so if you want to include the current directory in the search path, you must include "." in the new settings.

似乎设置我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应用程序的类路径,因此不会破坏任何兼容性。

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 
+0

设置CLASSPATH似乎解决了查找jar文件的问题,但是现在我在尝试从命令行运行时出现'错误:无法找到或加载主类MyTwitterApp'。如果我删除了CLASSPATH,我可以从命令行运行其他项目。一旦CLASSPATH被添加,我就失去了这个能力。 – raphnguyen

+0

你的MyTwitterApp.class是在一个包中还是没有包? – shazin

+0

它不在包装中。 MyTwitterApp.java在默认包中。 – raphnguyen