Проблема GWT / Eclipse / Jetty: Jasper не может разрешить библиотеки тегов - PullRequest
12 голосов
/ 12 мая 2009

Я пытаюсь заставить GWT Hosted Mode работать в Eclipse, а-ля this HOWTO . Сервлеты работают нормально, как и мой код GWT, но все мои JSP не работают из-за таких ошибок, как:

[WARN] /view/lniExecutiveSummary.htm
org.apache.jasper.JasperException: /WEB-INF/jsp/lni/lniExecutiveSummary.jsp(1,1) The absolute uri: http://java.sun.com/jsp/jstl/fmt cannot be resolved in either web.xml or the jar files deployed with this application
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
    [ trimmed ]

Это веб-приложение прекрасно работает при развертывании под Tomcat 5x; Я просто не могу заставить его разрешить теги при работе в Eclipse. Я новичок в Eclipse, и работа со всеми движущимися частями, необходимыми для GWT + Maven, заставляет меня выдергивать волосы.

Обновление : я больше не использую Eclipse; Я переключился (назад!) На Intellij IDEA. Поэтому я не могу честно оценить ответы, которые вы опубликовали. Когда произойдет какое-либо голосование или кто-то другой сообщит об успехе одним из этих методов, я приму соответствующий ответ. Благодаря.

Ответы [ 4 ]

1 голос
/ 22 октября 2010

Добавьте файлы Jar в classpath проекта eclipse. если у вас уже был этот файл tomcat lib. Эта опция будет работать для вас. Второй вариант - добавить jar в папку lib Web-Inf, если у вас есть веб-проект eclipse.

1 голос
/ 09 декабря 2009

Я чувствую твою боль. Я прошел через ту же боль, пытаясь заставить gwt, maven и затмение работать вместе.

Я смог заставить его работать с maven, используя следующий файл pom.xml. Таким образом, вы можете использовать mvn gwt:run для запуска в режиме хостинга, но, к сожалению, я никогда не смог получить цель mvn mvn gwt:eclipse для генерации конфигурации времени запуска eclipse.

Вот соответствующие фрагменты из моего pom.xml. Обратите внимание, что я обнаружил, что проще установить gwt в отдельном месте и указать maven, чтобы использовать его вместо mvn для загрузки gwt из репозитория. Область действия системного уровня в зависимостях mvn - то, что делает это возможным.

  <properties>

      <!-- convenience to define GWT version in one place -->
      <gwt.version>1.7.1</gwt.version>
      <google.webtoolkit.home>${env.GWT_HOME}</google.webtoolkit.home>

      <!--  tell the compiler we can use 1.5 -->
      <maven.compiler.source>1.6</maven.compiler.source>
      <maven.compiler.target>1.6</maven.compiler.target>      

  </properties>

  <dependencies>

      <!--  GWT dependencies (from central repo) -->
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-servlet</artifactId>
      <version>${gwt.version}</version>
      <scope>system</scope>
      <systemPath>${env.GWT_HOME}/gwt-servlet.jar</systemPath>
    </dependency>
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-user</artifactId>
      <version>${gwt.version}</version>
      <scope>system</scope>
      <systemPath>${env.GWT_HOME}/gwt-user.jar</systemPath>
    </dependency>

    ... other dependencies...
  </dependencies>

  <build>
    <outputDirectory>war/WEB-INF/classes</outputDirectory>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        <version>1.1</version>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>generateAsync</goal>
              <goal>test</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
            <runTarget>com.gwt.example/Application.html</runTarget>
            <extraJvmArgs>-Xmx512m</extraJvmArgs>
        </configuration>
      </plugin>
      <!--
          If you want to use the target/web.xml file mergewebxml produces,
          tell the war plugin to use it.
          Also, exclude what you want from the final artifact here.
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webXml>target/web.xml</webXml>
                    <warSourceExcludes>.gwt-tmp/**</warSourceExcludes>
                </configuration>
            </plugin>
            -->

      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>2.0.2</version>
          <configuration>
            <source>${maven.compiler.source}</source>
            <target>${maven.compiler.target}</target>
            <module>com.gwt.example</module>
          </configuration>
      </plugin>
    </plugins>

    ...rest of pom.xml...

Еще одна техника, с которой я добился успеха - это использование eclipse google gwt plugin . Просто используйте мастер для создания нового проекта gwt, убедитесь, что вы можете запустить его из eclipse, а затем измените его с помощью собственного кода.

1 голос
/ 09 декабря 2009

Это веб-приложение прекрасно работает при развертывании под Tomcat 5x; Я просто не могу заставить его разрешить теги при работе в Eclipse. Я новичок в Eclipse, и работа со всеми движущимися частями, необходимыми для GWT + Maven, заставляет меня вырывать волосы.

По-видимому, у вас есть файлы JAR JSTL в Tomcat/lib вместо WEB-INF/lib. Вы можете исправить это как минимум тремя способами:

  1. Перемещение / копирование файлов JAR JSTL в WEB-INF/lib.
  2. Переместите / скопируйте файлы JAR JSTL в Tomcat/lib вашего компьютера для разработки.
  3. Свяжите нужный сервер Tomcat, содержащий файлы JAR JSTL, с веб-проектом в Eclipse. Если это еще не сделано, добавьте сервер Tomcat в Servers представлении. Затем в свойствах проекта перейдите к Путь сборки Java > Библиотеки > Добавить библиотеку > Время выполнения сервера > выберите нужный сервер.
1 голос
/ 12 мая 2009

Вы пытались пометить "jsf-api.jar" как "экспортированный" в вашем проекте Java?
(как упомянуто в этой теме )

1.) Зайдите в свойства java-проекта и отметьте «jsf-api.jar» как экспортированный. (project>properties>java build path>order and exports)
2.) Зайдите в расширенные глобальные настройки tomcat и добавьте свой проект в путь к классу котов (windows>preferences>tomcat>advanced>add projects to tomcat classpath)

Затем попробуйте еще раз запустить ваше веб-приложение в Eclipse.

Вот статья , описывающая ту же процедуру / настройку, но не для JSF, а для Hudson (хотя та же проблема)

Вы можете ясно видеть два шага, которые я упомянул выше:


(источник: hudson-ci.org )


(источник: hudson-ci.org )

...