GWT/Eclipse/Jetty问题:Jasper can';t解析标记库
我正试图让GWT托管模式在Eclipse中工作。Servlets工作正常,我的GWT代码也是如此,但我的所有JSP都会失败,因为出现了如下错误:GWT/Eclipse/Jetty问题:Jasper can';t解析标记库,eclipse,gwt,jetty,jstl,taglib,Eclipse,Gwt,Jetty,Jstl,Taglib,我正试图让GWT托管模式在Eclipse中工作。Servlets工作正常,我的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 b
[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下时,此webapp工作正常;在Eclipse中运行时,我似乎无法让它解析标记库。
我是Eclipse的新手,让它与GWT+Maven所需的所有移动部件一起工作让我感到非常紧张
更新:我不再使用Eclipse;我(又)换成了Intellij创意。所以我不能诚实地评价你们这些善良的人所发布的答案。一旦有投票行为发生,或者其他人报告使用其中一种方法成功,我将接受适当的答案。谢谢。您是否尝试在Java项目中将“jsf api.jar
”标记为“导出”?(如中所述) 1.)进入java项目属性并将“
jsfapi.jar
”标记为导出。
(project>properties>java构建路径>order and exports
)2.)进入高级全局tomcat首选项并将您的项目添加到 tomcat类路径(
windows>preferences>tomcat>advanced>addprojectto
tomcat类路径
)
然后,再次尝试在eclipse下运行您的webapp
这里描述的是相同的过程/设置,不是针对JSF,而是Hudson(尽管问题相同)
您可以清楚地看到我上面提到的两个步骤:
(来源:)
(来源:)我感觉到了你的痛苦。为了让gwt、maven和eclipse协同工作,我也经历了同样的痛苦 我已经能够使用以下pom.xml使它与maven一起工作。通过这种方式,您可以使用
mvn gwt:run
在托管模式下运行,但不幸的是,我无法实现生成eclipse启动运行时配置的mvn目标mvn gwt:eclipse
下面是我的pom.xml中的相关片段。注意,我发现在单独的位置安装gwt比让mvn从repo下载gwt更容易,并让maven使用它。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...
1.7.1
${env.GWT_HOME}
1.6
1.6
com.google.gwt
. 只需使用向导创建一个新的gwt项目,确保可以从eclipse运行它,然后使用自己的代码进行修改
当部署在Tomcat 5x下时,此webapp工作正常;在Eclipse中运行时,我似乎无法让它解析标记库。我是Eclipse的新手,让它与GWT+Maven所需的所有移动部件一起工作让我感到非常紧张
显然,JSTL JAR文件位于Tomcat/lib
中,而不是WEB-INF/lib
。您至少可以通过三种方式解决此问题:
将JSTL JAR文件移动/复制到WEB-INF/lib
中
将JSTL JAR文件移动/复制到开发机器的Tomcat/lib
中
将包含JSTL JAR文件的右侧Tomcat服务器与Eclipse中的web项目相关联。如果尚未完成,请在Servers
视图中添加Tomcat服务器。然后在项目属性中转到Java构建路径>库>添加库>服务器运行时>选择有问题的服务器
在eclipse项目类路径中添加Jar文件。如果您已经有了这个文件tomcat lib。此选项适用于您。第二个选项是在Web Inf库文件夹中添加jar,如果您有eclipse Web项目。Hmm,为什么是jsf?你是说jstl吗?我已经在maven配置中将其作为dep,所以它应该已经在类路径上了。但我会继续尝试手动将其添加到构建路径。JSTL更像:)但是这个答案中描述的一般原则仍然有效。对你的案子有效吗?没有。我已经通过Maven将jstl列为依赖项;它出现在“库”选项卡上的Maven deps下,我在“订单和导出”选项卡上选中了“Maven依赖项”。还是没有乐趣-(很遗憾听到这个消息,呃……读一下。如果你真的找到了解决方案,别忘了把它贴在这里;)行。无论如何都要感谢你的帮助。很难相信在将近7年后,这仍然是一个问题。一般来说,解决JSTL URI的问题有这么多答案,但没有专门针对GWT&Jetty的解决方案,因为GWT&Jetty隐藏在一个很深、很暗而且不太明显的地方,它对旧JSTL有一个奇怪的依赖性,这会打乱任何导入新JSTL依赖性的尝试。(例如,一旦GWT部署到Tomcat上,一切都会正常工作。)在这一阶段,我最大的希望是像@BalusC这样的人会开始做GWT(如果他还没有),并最终发布解决此问题的方法-P