GWT/Eclipse/Jetty问题:Jasper can';t解析标记库

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

我正试图让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 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