我在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”
您还必须将twitter库类路径添加到'java'命令,因此编译后的类文件可以由类加载器加载。 – 2014-10-29 17:30:59
您可以创建一个包含该库的fatJar,然后运行该jar文件。 – brso05 2014-10-29 17:31:26
我也试过:'java -cp“../lib/*”MyProgram“开始抛出一个新的错误:无法找到或加载主类MyProgram – stoneage 2014-10-29 17:33:20