Проблема GWT/Eclipse/Jetty: Jasper не может разрешать библиотеки тегов
Я пытаюсь запустить режим GWT Hosted в Eclipse, à la этот 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 ]
Этот webapp отлично работает при развертывании под Tomcat 5x; Я просто не могу заставить его разрешить taglib при запуске в Eclipse.
Я новичок в Eclipse, и заставляя его работать со всеми движущимися частями, необходимыми для GWT + Maven, я вытаскиваю свои волосы.
Обновить: я больше не использую Eclipse; Я переключился (обратно!) В Intellij IDEA. Поэтому я не могу честно оценить ответы, которые вы, например, опубликовали. После того, как произойдет какое-то голосование, или кто-то еще сообщит об успехах с одним из этих методов, я приму соответствующий ответ. Спасибо.
Ответы
Ответ 1
Вы пытались пометить "jsf-api.jar
" как "экспортированный" в своем проекте Java?
(как упоминалось в этот поток)
1.) Перейдите в свойства java-проекта и отметьте "jsf-api.jar
" как экспортированный. (project>properties>java build path>order and exports
)
2.) Перейдите в расширенные глобальные предпочтения tomcat и добавьте свой проект в путь класса tomcat (windows>preferences>tomcat>advanced>add projects to
tomcat classpath
)
Затем попробуйте снова запустить webapp под затмением.
Вот статья, описывающая ту же процедуру/настройку, а не JSF, но Хадсон (тем не менее, проблема )
Вы можете четко видеть два шага, о которых я говорил выше:
http://wiki.hudson-ci.org/download/attachments/4161557/override.png
http://wiki.hudson-ci.org/download/attachments/4161557/otherTips.png
Ответ 2
Я чувствую твою боль. Я прошел через ту же боль, пытаясь заставить работать gwt, maven и eclipse.
Мне удалось заставить его работать с 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. Просто используйте мастер для создания нового проекта gwt, убедитесь, что вы можете запустить его из eclipse, а затем изменить с помощью собственного кода.
Ответ 3
Этот webapp отлично работает при развертывании под Tomcat 5x; Я просто не могу заставить его разрешить taglib при запуске в Eclipse. Я новичок в Eclipse, и заставляя его работать со всеми движущимися частями, необходимыми для GWT + Maven, я вытаскиваю свои волосы.
У вас, видимо, есть JSTL JAR файл в Tomcat/lib
вместо WEB-INF/lib
. Вы можете исправить это, по крайней мере, тремя способами:
- Переместить/скопировать JAR файлы JSTL в
WEB-INF/lib
.
- Переместите/скопируйте JSTL JAR файл в
Tomcat/lib
вашей машины разработки.
- Свяжите правильный сервер Tomcat, содержащий JSTL JAR файлы с веб-проектом в Eclipse. Если этого еще не сделано, добавьте сервер Tomcat в представление
Servers
. Затем в свойствах проекта перейдите в Java Build Path > Libraries > Add Library > Runtime серверa > выберите сервер, о котором идет речь.
Ответ 4
Добавьте файлы Jar в путь класса проекта eclipse. если у вас уже есть этот файл tomcat lib. Этот вариант будет работать для вас. Второй вариант - добавить jar в папку Web-Inf lib, если у вас есть веб-проект eclipse.