2014-10-29 156 views
0

我在Mac OS X 10.9.2(Mavericks)上。我有使用外部Java库(twitter4j)的代码。当我通过NetBeans运行它时,它运行良好。但是,试图在终端中运行几乎相同的代码会给我带来错误。Java从命令行运行的代码

我的目录结构很简单 - 我有一个带有.java文件的'src'文件夹和一个带有我使用的外部.jar文件的'lib'文件夹。

从src文件夹,我打电话javac -cp "../lib/*" MyProgram.java似乎工作正常。现在,如果我叫java MyProgram,我得到一个异常:

Exception in thread "main" java.lang.NoClassDefFoundError: twitter4j/StreamListener 
at java.lang.Class.getDeclaredMethods0(Native Method) 
at java.lang.Class.privateGetDeclaredMethods(Class.java:2693) 
at java.lang.Class.privateGetMethodRecursive(Class.java:3040) 
at java.lang.Class.getMethod0(Class.java:3010) 
at java.lang.Class.getMethod(Class.java:1776) 
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) 
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) 
Caused by: java.lang.ClassNotFoundException: twitter4j.StreamListener 
at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 

它似乎有麻烦正确导入外部twitter4j库。我在这里错过了什么?

这些代码我的import语句: import twitter4j.*;import twitter4j.conf.ConfigurationBuilder;

UPDATE:使用下面的建议,我也尝试过通过java -cp "../lib/*" MyProgram运行它赋予:“无法找到或加载主类MyProgram”

+1

您还必须将twitter库类路径添加到'java'命令,因此编译后的类文件可以由类加载器加载。 – 2014-10-29 17:30:59

+1

您可以创建一个包含该库的fatJar,然后运行该jar文件。 – brso05 2014-10-29 17:31:26

+0

我也试过:'java -cp“../lib/*”MyProgram“开始抛出一个新的错误:无法找到或加载主类MyProgram – stoneage 2014-10-29 17:33:20

回答

0

您需要在运行程序时以及编译时指定类路径:

例如

java -cp "../lib/*" MyProgram 
+0

运行上述给我:无法找到或加载主类MyProgram – stoneage 2014-10-29 17:34:58