2009-05-11 24 views
12

Tôi đang cố gắng để có được chế độ Lưu trữ GWT hoạt động trong Eclipse, à la this HOWTO. Servlets hoạt động tốt, cũng như đang GWT của tôi, nhưng tất cả JSP của tôi thất bại bởi vì với lỗi như sau:Vấn đề GWT/Eclipse/Jetty: Jasper không thể giải quyết thư viện thẻ

[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 này hoạt động tốt khi triển khai dưới Tomcat 5x; Tôi dường như không thể làm cho nó giải quyết các thẻ taglib khi chạy trong Eclipse. Tôi mới làm quen với Eclipse, và làm cho nó hoạt động với tất cả các bộ phận chuyển động cần thiết cho GWT + Maven khiến tôi kéo tóc ra.

Cập nhật: Tôi không còn sử dụng Eclipse; Tôi đã chuyển (trở lại!) Cho Intellij IDEA. Vì vậy, tôi không thể đánh giá một cách trung thực những câu trả lời mà các bạn đã đăng. Khi một số hành động bỏ phiếu xảy ra, hoặc người khác báo cáo thành công với một trong những phương pháp này, tôi sẽ chấp nhận câu trả lời thích hợp. Cảm ơn.

+1

Khó tin rằng gần 7 năm sau, đây vẫn là một vấn đề. Vì vậy, nhiều câu trả lời SO cho vấn đề giải quyết các JSTL URI nói chung, nhưng không có giải pháp đặc biệt cho GWT & Jetty, ẩn ở đâu đó sâu, tối và không rõ ràng, có sự phụ thuộc kỳ lạ vào các JSTL cũ gây rối Phụ thuộc JSTL. (Một khi GWT được triển khai cho Tomcat, ví dụ, tất cả đều hoạt động.) Hy vọng tốt nhất của tôi ở giai đoạn này là một người như @BalusC sẽ bắt đầu thực hiện GWT (nếu anh ta chưa làm) và cuối cùng là sửa chữa cho vấn đề này. :-P –

Trả lời

1

Bạn đã cố đánh dấu "jsf-api.jar" là "đã xuất" trong dự án Java của mình chưa?
(như đã đề cập trong this thread)

1.) Đi vào các thuộc tính java-dự án và đánh dấu "jsf-api.jar" như xuất khẩu. (project>properties>java build path>order and exports)
2.) Đi vào các ưu đãi tomcat toàn cầu tiên tiến và thêm dự án của bạn để classpath tomcat (windows>preferences>tomcat>advanced>add projects to tomcat classpath)

Sau đó, hãy thử một lần nữa để chạy ứng dụng web của bạn dưới nhật thực.

Đây là an article mô tả các thủ tục tương tự/cài đặt, không cho JSF nhưng Hudson (cùng một vấn đề mặc dù)

Bạn có thể thấy rõ hai bước tôi đã đề cập ở trên:

http://wiki.hudson-ci.org/download/attachments/4161557/override.png

http://wiki.hudson-ci.org/download/attachments/4161557/otherTips.png

+1

Hmm, tại sao jsf? Bạn có ý nói jstl? Tôi đã có đó như là một dep trong cấu hình maven của tôi, vì vậy nó nên đã được trên classpath. Nhưng tôi sẽ tiếp tục và thử thêm nó theo cách thủ công vào đường dẫn xây dựng. Cảm ơn. –

+1

JSTL giống như nó :) Nhưng nguyên tắc chung được mô tả trong câu trả lời này vẫn là viết tắt. Vì vậy, nó đã làm việc cho trường hợp của bạn? – VonC

+1

Không. Tôi đã có jstl được liệt kê như là một phụ thuộc thông qua Maven; nó xuất hiện dưới Maven deps trên tab "Libraries", và tôi có "Maven Dependencies" được đánh dấu trên tab "Order and Export". Vẫn không có niềm vui. :-( –

1

Tôi cảm thấy đau đớn của bạn. Tôi đã đi qua cùng một nỗi đau cố gắng để có được gwt, maven, và nhật thực để làm việc cùng nhau.

Tôi đã có thể làm cho nó hoạt động với maven bằng cách sử dụng tệp pom.xml sau. Bằng cách này bạn có thể sử dụng mvn gwt:run để chạy ở chế độ được lưu trữ, nhưng thật không may, tôi không bao giờ có thể nhận được mục tiêu mvn mvn gwt:eclipse để tạo cấu hình thời gian chạy khởi chạy nhật thực để hoạt động.

Dưới đây là các đoạn mã có liên quan từ tệp pom.xml của tôi. Lưu ý rằng tôi đã tìm thấy nó dễ dàng hơn để cài đặt gwt ở vị trí riêng biệt và điểm maven để sử dụng mà thay vì có mvn download gwt từ repo. Phạm vi cấp độ "hệ thống" trong các phụ thuộc mvn là những gì làm cho điều này xảy ra.

<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... 

Một kỹ thuật khác mà tôi đã thành công là sử dụng nhật thực google gwt plugin. Chỉ cần sử dụng thuật sĩ để tạo một dự án gwt mới, đảm bảo rằng bạn có thể chạy nó từ nhật thực, sau đó sửa đổi với mã của riêng bạn.

1

Ứng dụng web này hoạt động tốt khi triển khai dưới Tomcat 5x; Tôi dường như không thể làm cho nó giải quyết các thẻ taglib khi chạy trong Eclipse.Tôi mới làm quen với Eclipse, và làm cho nó hoạt động với tất cả các bộ phận chuyển động cần thiết cho GWT + Maven để tôi kéo tóc ra.

Bạn dường như có tập tin JAR JSTL (s) trong Tomcat/lib thay vì WEB-INF/lib. Bạn có thể khắc phục điều này trong ít nhất ba cách:

  1. Di chuyển/sao chép tệp JSTL JAR vào WEB-INF/lib.
  2. Di chuyển/sao chép (các) tệp JST JAR của JSTL vào Tomcat/lib của máy phát triển của bạn.
  3. Kết hợp máy chủ Tomcat phù hợp có chứa tệp JSTL JAR với dự án web trong Eclipse. Nếu chưa hoàn thành, hãy thêm máy chủ Tomcat vào chế độ xem Servers. Sau đó, trong dự án bất động sản đi đến Java Build Path>Libraries>Thêm Library>Server Runtime> chọn máy chủ trong câu hỏi.
1

Thêm tệp Jar trong đường dẫn lớp dự án eclipse. nếu bạn đã có tập tin này lib tomcat. Tùy chọn này sẽ hoạt động cho bạn. Tùy chọn thứ hai là thêm jar vào thư mục Web-Inf lib nếu bạn có dự án web eclipse.

Các vấn đề liên quan