为什么我不能用shell_exec运行这个jar?

时间:2015-09-29 10:44:55

标签: java php jar 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中导出我的项目。但是当我去运行它时,我从终端

采取这个
  

itsoum @ itsoum-Inspiron-3542:/ opt / lampp / htdocs / tweet $ java -jar   ilias.jar线程“main”中的异常java.lang.NoClassDefFoundError:   twitter4j / TwitterException at   java.lang.Class.getDeclaredMethods0(Native Method)at   java.lang.Class.privateGetDeclaredMethods(Class.java:2625)at at   java.lang.Class.getMethod0(Class.java:2866)at   java.lang.Class.getMethod(Class.java:1676)at   sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)at at   sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)   引起:java.lang.ClassNotFoundException:   twitter4j.TwitterException at   java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)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:425)at   sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)at at   java.lang.ClassLoader.loadClass(ClassLoader.java:358)... 6更多

知道出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

您的程序是指外部库(twitter4j),您需要引用此外部库来运行您的程序

您有两种选择:

  • 将lib目录中的所有jar文件包含到jar文件的清单中(可以在那里使用相对路径)
  • 使用-cp在命令行中指定所有内容(包括jar): java -cp ilias.jar:<path to twitter4j.jar> SearchTweets.Main