Управление порядком загрузки JAR-файлов в classpath - PullRequest
1 голос
/ 06 октября 2011

Я использую GWT 2.4 с gquery-dnd-bundle 1.0.4, чтобы я мог строить деревья с помощью узлов перетаскивания. Я столкнулся с досадной ошибкой (http://code.google.com/p/gwtquery-plugins/issues/detail?id=6). Суть в том, что мне нужно гарантировать, что файл "gquery-dnd-bundle-1.0.4.jar" будет загружен загрузчиком классов во время выполнения до gwt-servlet. файл JAR в моем каталоге WEB-INF / lib.

Как я могу это гарантировать?

Я использую Eclipse Indigo с проектом веб-приложения GWT, если это полезно.

Вот точная ошибка, которую я вижу

[ERROR] [draganddroptree] - Errors in 'jar:file:/C:/Documents%20and%20Settings/E18538/workspace/DragAndDropTree/war/WEB-INF/lib/gquery-dnd-bundle-1.0.4.jar!/gwtquery/plugins/droppable/client/gwt/DragAndDropCellTree.java'
        [ERROR] [draganddroptree] - Line 24: The type com.google.gwt.user.cellview.client.CellTreeNodeView is not visible
        [ERROR] [draganddroptree] - Line 86: CellTreeNodeView cannot be resolved to a type
        [ERROR] [draganddroptree] - Line 87: The constructor DragAndDropCellTreeNodeView<T>(DragAndDropCellTree, CellTreeNodeView<?>, TreeViewModel.NodeInfo<T>, Element, T) refers to the missing type CellTreeNodeView
    [ERROR] [draganddroptree] - Unable to load module entry point class com.cme.draganddroptree.client.DragAndDropTree (see associated exception for details)
    [ERROR] [draganddroptree] - Failed to load module 'draganddroptree' from user agent 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1' at localhost:4490

Ответы [ 2 ]

0 голосов
/ 07 октября 2011

Чтобы решить эту ошибку , вы должны установить gquery-dnd-bundle-1.0.4.jar перед GWT в вашем classpath.Используя Eclipse в свойствах своего проекта, перейдите на Путь сборки Java / Заказ экспорта и убедитесь, что gquery lib находится перед GWT.

В любом случае, у вас может быть другая проблема, такая как gquery-dnd-bundle-1.0.4.jar совместим с GWT 2.3.x, и вы используете GWT 2.4.До новой версии dnd-bundle вы можете использовать Enhance-Plugin-1.0.2.jar (содержит пакет DND) и gwtquery-1.1.0-SNAPSHOT.jar .

Вам также следует взглянуть на встроенную поддержку перетаскивания, добавленную в GWT 2.4.Документация скудна, но я нашел пример (вы можете перетащить шаблоны справа и добавить их в детали задачи) и соответствующий исходный код .(информация из этого сообщения )

0 голосов
/ 06 октября 2011

Вы не можете организовать загрузку ваших JAR-файлов "WEB-INF / lib" в любом детерминированном порядке.Единственный верный обходной путь, о котором я могу подумать, - это поместить файл JAR с более низким приоритетом в каталог, который сканируется до «WEB-INF / lib».

Например, , если вы используете Tomcat, тогда вы могли бы :

  1. Поместить файл "gwt-servlet.jar" в каталог "$ CATALINA_BASE / lib".
  2. Сохранить "gquery-dnd-"bundle-1.0.4.jar" внутри вашей WAR.

Таким образом, "gwt-servlet.jar" будет сначала загружен в CLASSPATH, а "gquery-dnd-bundle-1.0.4.jar" будет загружен вторым ... перезаписывая любойконфликтующие классы из "gwt-servlet.jar".

Если вы используете какой-либо другой сервер приложений, то каталог "lib" на уровне сервера будет другим ... но основная идея заключается в том, что JAR с более низким приоритетом должен идти в "lib" сервера приложений", в то время как JAR с более высоким приоритетом должен оставаться в" lib "веб-приложения.

Не самая чистая ситуация в мире, но она гарантирует желаемый результат.

ОБНОВЛЕНИЕ: Вызнаете, подумав об этом и перечитав документы Tomcat более внимательно, я могу на самом деле иметь это задом наперед.Вам может понадобиться поместить «gquery-dnd-bundle-1.0.4.jar» на вашем сервере приложений «lib» и «gwt-servlet.jar» в «lib» вашего веб-приложения.Если вы попробуете мое предложение и обнаружите, что оно работает для вас с одним подходом к другому, дайте мне знать, и я отредактирую свой ответ, чтобы быть более точным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...