Java从命令行运行代码

时间:2014-10-29 17:28:07

标签: java macos command-line twitter4j

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

我的目录结构很简单 - 我有一个带有.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;

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

1 个答案:

答案 0 :(得分:0)

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

E.g。

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