Я только что установил GWT 2.6 и теперь получаю сообщение об ошибке "Описание Тип пути доступа Тип файла Файл war\WEB-INF\lib\gwt-servlet.jar имеет другой размер, чем GWT SDK-библиотека gwt-servlet.jar; возможно, это другая версия? gwt-servlet.jar/AwardTracker/war/WEB-INF/lib Неизвестная проблема веб-инструментария Google "
Я загрузил GWT 2.6 zip, а затем скопировал каталог "GWT-2.6.0" в "Eclipse\eclipse-jee-juno-SR1-win32\eclipse\plugins". Затем я щелкнул правой кнопкой мыши по проекту и выбрал "свойства /Google/Web Toolkit/Configure SDKs.../Add". Затем я перешел в каталог "GWT-2.6.0", добавил его и выбрал.
Я выполнил решение от Braj и получил следующие ошибки, когда перекомпилировал:
Модуль компиляции org.AwardTracker.AwardTracker Проверяющие единицы: Игнорируется 2 единицы с ошибками компиляции в первый проход. Скомпилируйте с помощью -strict или с -logLevel, установленным в TRACE или DEBUG, чтобы увидеть все ошибки. Вычисление всех возможных результатов перезаписи для 'gwtupload.client.DecoratedFileUpload.DecoratedFileUploadImpl' Rebinding gwtupload.client.DecoratedFileUpload.DecoratedFileUploadImpl Не удалось найти точное правило соответствия. Использование "ближайшего" правила, основанного на значениях возврата. Возможно, вам понадобится реализовать конкретную привязку в случае, если поведение возврата обратно не заменяет ошибки отсутствия связи [ERROR] в "gwtupload/client/DecoratedFileUpload.java" [ERROR]. Строка 347: результат перезаписи "gwtupload.client.DecoratedFileUpload.DecoratedFileUploadImpl 'не может быть абстрактным
Вышеописанное было исправлено, загрузив gwtupload-1.0.1.jar, используя "Добавить внешние JARS", чтобы добавить его в библиотеку и удалить старый gwtupload-0.6.6.jar. Затем я перекомпилировал и скомпилировал работу. Однако теперь у меня есть ошибка в моем "MyCustomisedUploadServlet" на линии (эта ошибка отсутствовала раньше):
protected static final String XML_ERROR_ITEM_NOT_FOUND = "<" + TAG_ERROR + ">item not found</" + TAG_ERROR + ">";
Остальная часть кода:
package org.AwardTracker.server;
import gwtupload.server.UploadAction;
import gwtupload.server.exceptions.UploadActionException;
import gwtupload.shared.UConsts;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Hashtable;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
/**
* This is an example of how to use UploadAction class.
*
* This servlet saves all received files in a temporary folder,
* and deletes them when the user sends a remove request.
*
* @author Manolo Carrasco Moñino
*
*/
public class MyCustomisedUploadServlet extends UploadAction {
private static final long serialVersionUID = 1L;
protected static final String XML_ERROR_ITEM_NOT_FOUND = "<" + TAG_ERROR + ">item not found</" + TAG_ERROR + ">";
Hashtable<String, String> receivedContentTypes = new Hashtable<String, String>();
/**
* Maintain a list with received files and their content types.
*/
Hashtable<String, File> receivedFiles = new Hashtable<String, File>();
/**
* Override executeAction to save the received files in a custom place
* and delete this items from session.
*/
@Override
public String executeAction(HttpServletRequest request, List<FileItem> sessionFiles) throws UploadActionException {
String response = "";
@SuppressWarnings("unused")
int cont = 0;
for (FileItem item : sessionFiles) {
if (false == item.isFormField()) {
cont ++;
try {
/// Create a temporary file placed in the default system temp folder
File file = File.createTempFile("upload-", ".bin");
item.write(file);
/// Save a list with the received files
receivedFiles.put(item.getFieldName(), file);
receivedContentTypes.put(item.getFieldName(), item.getContentType());
/// Send a customised message to the client.
response += file.getAbsolutePath();
} catch (Exception e) {
throw new UploadActionException(e);
}
}
}
/// Remove files from session because we have a copy of them
removeSessionFileItems(request);
/// Send your customised message to the client.
return response;
}
/**
* Get the content of an uploaded file.
*/
@Override
public void getUploadedFile(HttpServletRequest request, HttpServletResponse response) throws IOException {
String fieldName = request.getParameter(UConsts.PARAM_SHOW);
File f = receivedFiles.get(fieldName);
if (f != null) {
response.setContentType(receivedContentTypes.get(fieldName));
FileInputStream is = new FileInputStream(f);
copyFromInputStreamToOutputStream(is, response.getOutputStream());
} else {
renderXmlResponse(request, response, XML_ERROR_ITEM_NOT_FOUND);
}
}
/**
* Remove a file when the user sends a delete request.
*/
@Override
public void removeItem(HttpServletRequest request, String fieldName) throws UploadActionException {
File file = receivedFiles.get(fieldName);
receivedFiles.remove(fieldName);
receivedContentTypes.remove(fieldName);
if (file != null) {
file.delete();
}
}
}
Я просто прокомментировал эту строку ("protected static final String XML_ERROR_ITEM_NOT_FOUND =" <"+ TAG_ERROR +"> элемент не найден ";"), перекомпилировал и запустил его, и он отлично работает. Надеюсь, все это поможет другим. Спасибо Брадж за помощь.
Всякий раз, когда вы меняете версию GWT, вы должны очистить свой проект от заглушки, которая автоматически генерируется предыдущей версией GWT, как показано ниже.
Проблема: файл war\WEB-INF\lib\gwt-servlet.jar
имеет другой размер, чем GWT SDK-библиотека gwt-servlet.jar
; возможно, это другая версия?
Решение. В вашем случае проблема заключается в gwt-servlet.jar
который автоматически генерируется предыдущей версией GWT. Просто удалите его вместе с другим заглушкой и снова скомпилируйте проект.
Это работает для меня очень хорошо
Выберите предупреждение, щелкните правой кнопкой мыши и выберите "Быстрое исправление" → "Синхронизировать/WEB-INF/lib с библиотеками SDK"
"Готово"
Скопировать файл sdk в каталог плагина не является корневым способом добавления другой версии SDK.
Воспользуйтесь настройками → Google → Web Toolkit, чтобы добавить еще одну версию GWT SDK.
В своем проекте выберите:
свойства проекта → Goolge → Web Toolkit вы можете выбрать SDK, который должен использовать проект.
Я изменил свой компилятор с 1,8 до 1,7 и потерял это сообщение.