我在我的类路径中包含了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运行应用程序,我还需要做些什么吗?
答案 0 :(得分:0)
您必须在命令行shell类路径中添加twitter4j-core-3.0.5.jar
和twitter4j-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应用程序的类路径,因此不会破坏任何兼容性。