GWT не может скомпилировать проект - PullRequest
0 голосов
/ 02 февраля 2012

Я создаю простое твиттер-приложение с GWT + twitter4j.Но я не могу запустить это или скомпилировать.

Вот коды и, пожалуйста, скажите мне, что с ним не так.

package in.isuru.twitter.server;

import java.util.ArrayList;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

import twitter4j.Query;
import twitter4j.QueryResult;
import twitter4j.Tweet;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;

public class Twit extends RemoteServiceServlet{

ArrayList<Tweet> tweets = new ArrayList<Tweet>();
//ArrayList<String> status = new ArrayList<String>();

public ArrayList<Tweet> search(String searchTerm){
    // The factory instance is re-useable and thread safe.
    Twitter twitter = new TwitterFactory().getInstance();
    Query query = new Query(searchTerm);
    QueryResult result = null;
    try {
        result = twitter.search(query);
    } catch (TwitterException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    for (Tweet tweet : result.getTweets()) {
        //System.out.println(tweet.getFromUser() + ":" + tweet.getText());
        tweets.add(tweet);

    }

    return tweets;
}

}

И на стороне клиента,

package in.isuru.twitter.client;

import java.util.ArrayList;

import twitter4j.Tweet;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.RootPanel;

import in.isuru.twitter.server.*;

/**
  * Entry point classes define <code>onModuleLoad()</code>.
 */
 public class Twitter implements EntryPoint {

Twit twit = new Twit();
ArrayList<Tweet> allStatus;

public void onModuleLoad() {

     // Create a Flex Table
    final FlexTable flexTable = new FlexTable();
    FlexCellFormatter cellFormatter = flexTable.getFlexCellFormatter();
    flexTable.addStyleName("cw-FlexTable");
    flexTable.setWidth("32em");
    flexTable.setCellSpacing(5);
    flexTable.setCellPadding(3);

    // Add some text
    cellFormatter.setHorizontalAlignment(0, 1, HasHorizontalAlignment.ALIGN_LEFT);
    cellFormatter.setColSpan(0, 0, 2);

    //search in twitter
    allStatus = twit.search("sex");
    for (int i=0 ; i <allStatus.size() ; i++) {
        //System.out.println(tweet.getFromUser() + ":" + tweet.getText());
        Tweet tweet = allStatus.get(i);
        String user = tweet.getFromUser();
        String status = tweet.getText();
        addRow(flexTable, user);
        addRow(flexTable, status);

    }

    // Add two rows to start
    // addRow(flexTable, "This is testing status update");
    // addRow(flexTable, "This is testing status update");

    // Return the panel
    flexTable.ensureDebugId("cwFlexTable");
    RootPanel.get().add(flexTable);
  }

  /**
   * Add a row to the flex table.
   */
  private void addRow(FlexTable flexTable, String status) {
    int numRows = flexTable.getRowCount();
    flexTable.setText(numRows, 0, status);
    flexTable.getFlexCellFormatter().setRowSpan(0, 1, numRows + 1);
  }

  /**
   * Remove a row from the flex table.
   */
  private void removeRow(FlexTable flexTable) {
    int numRows = flexTable.getRowCount();
    if (numRows > 1) {
      flexTable.removeRow(numRows - 1);
      flexTable.getFlexCellFormatter().setRowSpan(0, 1, numRows - 1);
    }

}
}

А вот код ошибки, который я получаю при компиляции.

Модуль компиляции in.isuru.twitter.Twitter Проверка новых скомпилированных модулей Игнорируется 1 модуль с ошибками компиляции при первом проходе.Скомпилируйте с -strict или с -logLevel, установленным в TRACE или DEBUG, чтобы увидеть все ошибки.Поиск классов точек входа [ОШИБКА] Ошибки в 'file: / E: /workspace/Twitter/src/in/isuru/twitter/client/Twitter.java' [ERROR] Строка 20: Исходный код для типа in.isuru недоступен.twitter.server.Twit;Вы забыли унаследовать необходимый модуль?[ОШИБКА] Строка 21: нет исходного кода для типа twitter4j.Tweet;Вы забыли унаследовать необходимый модуль?[ОШИБКА] Невозможно найти тип 'in.isuru.twitter.client.Twitter' [ОШИБКА] Подсказка: предыдущие ошибки компилятора могли сделать этот тип недоступным [ОШИБКА] Подсказка: проверьте цепочку наследования из вашего модуля;возможно, он не наследует требуемый модуль или модуль может не правильно добавлять записи исходного пути

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 02 февраля 2012

Вы не можете использовать любую библиотеку Java в GWT.GWT - это не Java, и библиотеки должны создаваться и настраиваться особым образом, поэтому вы получаете эту ошибку.

Рекомендую прочитать Официальную документацию

0 голосов
/ 02 февраля 2012

[ОШИБКА] Строка 20: нет исходного кода для типа in.isuru.twitter.server.Twit;

Это ваша проблема - из пакета вы объявили, что Twit - это объект сервера, и поэтому компилятор GWT не сделал его доступным для компиляции на клиенте.

Похоже, что вы пытаетесь напрямую вызвать серверный класс Twit вместо того, чтобы вызывать его асинхронно - посмотрите на документацию RPC, чтобы создать удаленный сервис, и как сделать асинхронные вызовы к нему. http://code.google.com/webtoolkit/doc/latest/tutorial/RPC.html

...