java - 运行java中收集推文的代码时出现异常

标签 java

我使用以下代码来收集推文。编译时没有任何错误。但是当我编译这个程序时,它显示了异常。

package com.crowley.simplestream;

import twitter4j.FilterQuery;
import twitter4j.Status;
import twitter4j.StatusDeletionNotice;
import twitter4j.StatusListener;
import twitter4j.TwitterStream;
import twitter4j.TwitterStreamFactory;
import twitter4j.User;
import twitter4j.conf.ConfigurationBuilder;
import twitter4j.StallWarning;

public class SimpleStream {
    public static void main(String[] args) {
        ConfigurationBuilder cb = new ConfigurationBuilder();

        cb.setDebugEnabled(true);

        cb.setOAuthConsumerKey("*********************");
        cb.setOAuthConsumerSecret("*******************");
        cb.setOAuthAccessToken("********************");
        cb.setOAuthAccessTokenSecret("*********************");

        TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance();

        StatusListener listener = new StatusListener() {
            @Override
            public void onException(Exception arg0) {
                // TODO Auto-generated method stub

            }
            @Override
            public void onDeletionNotice(StatusDeletionNotice arg0) {
                // TODO Auto-generated method stub

            }
            @Override
            public void onScrubGeo(long arg0, long arg1) {
                // TODO Auto-generated method stub

            }
            @Override
            public void onStatus(Status status) {
                User user = status.getUser();

                // gets Username
                String username = status.getUser().getScreenName();
                System.out.println(username);
                String profileLocation = user.getLocation();
                System.out.println(profileLocation);
                long tweetId = status.getId(); 
                System.out.println(tweetId);
                String content = status.getText();
                System.out.println(content +"\n");

            }

            @Override
            public void onTrackLimitationNotice(int arg0) {
                // TODO Auto-generated method stub

            }
           @Override
           public void onStallWarning(StallWarning warning){
           }

        };
        FilterQuery fq = new FilterQuery();

        String keywords[] = {"ireland"};

        fq.track(keywords);

        twitterStream.addListener(listener);
        twitterStream.filter(fq);  

    }
}

运行该程序时出现的异常如下。

Exception in thread "main" java.lang.NoClassDefFoundError: SimpleStream (wrong name: com/crowley/simplestream/SimpleStream)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:472)

我使用了 Jwitter4j。但它不包含像ClassLoader.java这样的包。我能做些什么?请帮助我。

最佳答案

您的项目是如何建立的?您是从命令行还是在 IDE 中编译并运行它?当你有一个名为 SimpleStream 的类时与 package com.crowley.simplestream;声明在顶部,然后 com.crowley.simplestream.SimpleStream是类的完全限定名称。 javac编译器将发出.class默认情况下,该文件位于当前目录中,但它期望在 com/crowley/simplestream/SimpleStream 中找到该类当你运行它时。

通常您会保留 com.crowley.simplestream.SimpleStream 的源代码在文件中com/crowley/simplestream/SimpleStream.java在您的项目中,通常位于 src 下方或src/main/java目录,并且您的 IDE(例如 Eclipse 或 IDEA)会将该目录中的所有源文件构建到并行输出目录结构中,其中包含所有 .class文件。听起来您可能会从命令行自己构建所有内容,当然您可以这样做,但您必须考虑类的完全限定名称以及 Java 期望在哪里找到它。

例如,您可以将源代码放入适当的目录中,并在调用 javac 时键入其完整路径。 ,或者您可以使用 -d切换到javac告诉它把.class放在哪里文件,然后您将在运行时使用该类的完全限定名称:

java com.crowley.simplestream.SimpleStream

关于java - 运行java中收集推文的代码时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24333459/

相关文章:

java - Android - 从网络下载图像,保存到应用程序私有(private)位置的内部存储器,显示列表项

java - 缓冲区和字节?

java - 线程 "main"java.lang.NullPointerException 中出现异常 newproject.PG1.main(PG1.java :30)

java - 仅出于测试目的模拟 Web 服务

java - 上传具有共享首选项的多个图像

Java图形批量渲染

java - 声明一个无用的局部变量

java - 在设置可见之前向 JFrame 添加内容

java - Hibernate 约束 ConstraintViolationException。有没有一种简单的方法可以忽略重复的条目?

Java进程IO