2013-09-21 39 views
1

我在Android上看到了很多與Twitter4j有關的錯誤,但我沒有在Android上使用它。我使用它作爲Bukkit(Minecraft插件)。出於某種原因,當我添加twitter4j核-3.0.3.jar到我的項目,我在服務器控制檯加載時得到一個錯誤:使用Bukkit的Minecraft服務器中的第三方jar(Twitter4J)

[SEVERE] Could not load 'plugins\Test.jar' in folder 'plugins' 

org.bukkit.plugin.InvalidPluginException: java.lang.NoClassDefFoundError: twitter4j/TwitterException 
     at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:184) 
     at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:305) 
     at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:230) 
     at org.bukkit.craftbukkit.v1_6_R2.CraftServer.loadPlugins(CraftServer.java:239) 
     at org.bukkit.craftbukkit.v1_6_R2.CraftServer.<init>(CraftServer.java:217) 
     at net.minecraft.server.v1_6_R2.PlayerList.<init>(PlayerList.java:56) 
     at net.minecraft.server.v1_6_R2.DedicatedPlayerList.<init>(SourceFile:11) 
     at net.minecraft.server.v1_6_R2.DedicatedServer.init(DedicatedServer.java:106) 
     at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:391) 
     at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582) 
Caused by: java.lang.NoClassDefFoundError: twitter4j/TwitterException 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Unknown Source) 
     at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:173) 
     ... 9 more 
Caused by: java.lang.ClassNotFoundException: twitter4j.TwitterException 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at org.bukkit.plugin.java.PluginClassLoader.findClass0(PluginClassLoader.java:80) 
     at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:53) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     ... 12 more` 

由於我是新來的Java,我真的沒有得到我在這裏做錯了什麼。這是我的代碼(我不認爲這是問題,因爲插件加載失敗...?!

   String TWITTER_CONSUMER_KEY = "XXXXXXXX"; 
      String TWITTER_SECRET_KEY = "XXXXXX"; 
      String TWITTER_ACCESS_TOKEN = "XXXXXXXXXX"; 
      String TWITTER_ACCESS_TOKEN_SECRET = "XXXXXX"; 

      ConfigurationBuilder cb = new ConfigurationBuilder(); 
      cb.setDebugEnabled(true).setOAuthConsumerKey(TWITTER_CONSUMER_KEY).setOAuthConsumerSecret(TWITTER_SECRET_KEY).setOAuthAccessToken(TWITTER_ACCESS_TOKEN).setOAuthAccessTokenSecret(TWITTER_ACCESS_TOKEN_SECRET); 
      TwitterFactory tf = new TwitterFactory(cb.build()); 
      Twitter twitter = tf.getInstance(); 
      try { 
       Query query = new Query(Username); 
       QueryResult result; 
       do { 
        result = twitter.search(query); 
        List<Status> tweets = result.getTweets(); 
        for (Status tweet : tweets) 
        { 
         String rawJSON = DataObjectFactory.getRawJSON(tweet); 
         try 
         { 
          BufferedWriter out = new BufferedWriter(new FileWriter((getDataFolder() + File.separator + "TwitterData.txt"))); 
          out.write(rawJSON); 
          out.close(); 
         } 
         catch (IOException ioe) 
         { 
          ioe.printStackTrace(); 
          System.out.println("Failed to store tweets: " + ioe.getMessage());   
         } 

        } 
       } 
       while ((query = result.nextQuery()) != null); 
       System.exit(0); 
      } 
      catch (TwitterException te) 
      { 
       te.printStackTrace(); 
       System.out.println("Failed to search tweets: " + te.getMessage()); 
       System.exit(-1); 
      } 

爲什麼Twitter4j不正確加載由於

編輯:此外, twitter4j-核心3.03.jar是在我的電腦上的另一個目錄。那是一個問題?

+0

嘗試從您的項目中刪除.jar,在您的項目中創建一個名爲libs的文件夾(如果它已經存在),並將.jar複製並粘貼到libs文件夾中。 – hichris123

+0

我試過了,但是我仍然得到相同的錯誤@ hichris123 –

+0

不確定。這是我發現讓它起作用的唯一途徑。 – hichris123

回答

1

通過Java程序所需的所有jar文件必須在服務器上的類路徑。這包括Twitter4J你的情況。