簡體   English   中英

為什么我不能用 shell_exec 運行這個 jar?

[英]Why i can't run this jar with shell_exec?

我在下面創建了 java 類。 此類使用 twitter4java api 進行 java-twitter 通信。

import twitter4j.*;
import twitter4j.auth.AccessToken;

import java.util.List;

public class SearchTweets {

    public static String API_Key = new String("xxxxxxxxxxxxxxxxx");
    public static String API_Secret = new String("xxxxxxxxxxxxxxxxx");
    public static String Access_Token = new String("xxxxxxxxxxxxxxxxx");
    public static String Access_Token_Secret = new String("xxxxxxxxxxxxxxxxx");

    public static void main(String[] args) {

        Twitter twitter = new TwitterFactory().getInstance();
        twitter.setOAuthConsumer(API_Key, API_Secret);
        AccessToken accessToken = new AccessToken(Access_Token, Access_Token_Secret);
        twitter.setOAuthAccessToken(accessToken);

        try {
            Query query = new Query("paok");
            QueryResult result;
            do {
                result = twitter.search(query);
                List<Status> tweets = result.getTweets();
                for (int i=0 ; i < tweets.size() ; i++)  {
                    Status s = tweets.get(i);
                    if (s.getPlace() != null) {
                        System.out.println("@" + s.getUser().getScreenName() + " - " + s.getPlace().getName());                     
                    }
                }
            } 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);
        }
    }
}

我已經在 eclipse 中創建了它。 現在我想在一個帶有 php 的網站上運行它。 我使用 shell_exec。 首先,我創建了一個簡單的 Java 類用於測試並且一切正常。

在我去運行我的 SearchTweets 課程之后,我不能。 我將我的項目從 Eclipse 導出到一個 jar 中。 但是當運行它時,我從終端中取出它

itoum@itsoum-Inspiron-3542:/opt/lampp/htdocs/tweet$ java -jar ilias.jar 線程“main”中的異常 java.lang.NoClassDefFoundError: twitter4j/TwitterException at java.lang.Class.getDeclaredMethods0(Native Method)在 java.lang.Class.privateGetDeclaredMethods(Class.java:2625) 在 java.lang.Class.getMethod0(Class.java:2866) 在 java.lang.Class.getMethod(Class.java:1676) 在 sun.launcher。 LauncherHelper.getMainMethod(LauncherHelper.java:494) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486) 由:java.lang.ClassNotFoundException: twitter4j.TwitterException at java.net.URLClassLoader$1.run(URLClassLoader.java) :366) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang .ClassLoader.loadClass(ClassLoader.java:425) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:358) ) ... 6個

知道出了什么問題嗎?

您的程序引用了外部庫 (twitter4j),您需要引用此外部庫來運行您的程序

您有兩個選擇:

  • 將 lib 目錄中的所有 jar 文件包含到 jar 文件的清單中(您可以在那里使用相對路徑)
  • 使用 -cp 在命令行上指定所有內容(包括您的 jar): java -cp ilias.jar:<path to twitter4j.jar> SearchTweets.Main

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM