2017-10-25 16 views
11

Alright StackOverflow, tôi sẽ đến với bạn trong thời gian cần thiết.JasperException - Không tìm thấy tệp ngay cả khi thẻ có mặt

Tôi đã kế thừa dự án với thư viện thẻ tùy chỉnh. Dự án nằm trong AEM, nhưng vấn đề là một vấn đề với phía Java thẳng của sự vật và không có gì cụ thể đối với AEM mà tôi biết. AEM được xây dựng trên OSGI, do đó có thể là có liên quan, nhưng một lần nữa nó không có khả năng là một phần của câu trả lời.

Về cơ bản, tôi chỉ nhận được ngoại lệ trên một trong hai máy chủ. Nó nói:

org.apache.sling.api.scripting.ScriptEvaluationException: org.apache.sling.scripting.jsp.jasper.JasperException: File "/META-INF/tags/helloWorld.tagx" không tìm thấy

Bây giờ - này helloWorld.tagx là loại rác còn lại trong dự án mẫu, nhưng vì một số lý do, điều đó là cần thiết. Có một vài vấn đề ở đây.

  1. Thẻ ở vị trí bên phải (META-INF/tags/helloWorld.tagx) và tôi đang sử dụng jsptld-maven-plugin để tạo ra các tập tin tld đó có vẻ đúng với tôi.

Cấu hình cho plugin (cũng như maven-bundle-plugin):

 <plugin> 
      <groupId>com.squeakysand.jsp</groupId> 
      <artifactId>jsptld-maven-plugin</artifactId> 
      <configuration> 
       <shortName>myproject</shortName> 
       <processTagFiles>true</processTagFiles> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>maven-bundle-plugin</artifactId> 
      <extensions>true</extensions> 
      <configuration> 
       <instructions> 
        <Bundle-Activator>com.rebny.taglib.osgi.Activator</Bundle-Activator> 
        <Include-Resource> 
         META-INF/${project.artifactId}-${project.version}.tld=${project.build.outputDirectory}/META-INF/${project.artifactId}-${project.version}.tld, 
         {maven-resources} 
        </Include-Resource> 
        <Sling-Bundle-Resources> 
         /META-INF/tags 
        </Sling-Bundle-Resources> 
       </instructions> 
      </configuration> 
     </plugin> 

Và phân khúc từ kết quả các tập tin tld:

<tag-file> 
    <name>helloWorld</name> 
    <path>/META-INF/tags/helloWorld.tagx</path> 
</tag-file> 

Vì vậy, nó có vẻ tốt đẹp đối với tôi, và Tôi đã thực hiện rất nhiều tìm kiếm và tìm thấy những người có lỗi cú pháp, vv nhưng tôi không tin rằng đó là trường hợp ở đây, đặc biệt là kể từ khi nó hoạt động trên một máy chủ.

  1. Phần lạ là thẻ không thực sự là được sử dụng ở bất kỳ đâu, nhưng việc xóa nó không giải quyết được vấn đề. Việc jsp ném lỗi này sử dụng các thẻ khác, nhưng không sử dụng thẻ này. Có nghĩa là không có tham chiếu đến thẻ này trong toàn bộ dự án - Tôi nghĩ rằng nó có thể ẩn một vấn đề khác. Lỗi nói rằng nó nằm trên dòng 6 của JSP, nhưng cả JSP nguồn hoặc JSP đã biên dịch đều có bất kỳ điều gì thú vị trên dòng 6 hoặc trong tệp. Một lần nữa, ngay cả các JSP biên dịch cũng không có tham chiếu đến thẻ này!

Tôi sẵn lòng cung cấp thông tin khác. Kiến thức của tôi về điều này khá kém, vì vậy tôi không chắc chắn chính xác thông tin nào có liên quan. Mọi mẹo trợ giúp hoặc khắc phục sự cố đều được đánh giá cao!

Full stack trace here

+0

Hai máy khác nhau như thế nào? ví dụ. cùng một phiên bản của tất cả mọi thứ, cùng một phần mềm, vv? – mikep

+0

toàn bộ stacktrace sẽ hữu ích –

+0

Máy chủ ứng dụng/vùng chứa nào bạn đang sử dụng? Bạn có thể, vui lòng cung cấp danh sách các tệp được bao gồm trong WEB-INF/lib không? Điều gì về TLD trong web.xml - bạn có thể cung cấp web.xml không? BTW: Tôi giả định rằng xây dựng của bạn là xây dựng maven đơn giản, mà không cần trích xuất, đóng gói lại. –

Trả lời

1

Đặt cược tốt nhất của bạn là trải qua Adobe Daycare. Họ là khá tốt về việc bạn bản vá lỗi. Đặc biệt là nếu khách hàng của bạn có mối quan hệ hiện tại với họ, họ nên làm gì nếu họ đang sử dụng AEM.

0

Vấn đề này liên quan đến file tag Scripted không được tìm thấy. Reference.

Đó là một lỗi mà nói, Nếu một taglib trong một bó, tham khảo một thẻ thực hiện như một kịch bản (located in /META-INF/tags) kịch bản này không được tìm thấy vì nó là không đã tìm kiếm trong gói chứa tld. Nó được sử dụng như một tài nguyên trên classpath.

Lỗi đã được sửa trong phiên bản JSP 2.3.2. Vì vậy, hãy sử dụng phiên bản JSP này trong dự án của bạn. Hơn nữa, lỗi này sẽ được sửa trong AEM 6.3.1.1 Hoặc cao hơn,

Đây là một hữu ích thread liên quan đến vấn đề này.

+0

Tôi đánh giá cao câu trả lời, nhưng bạn sẽ thấy rằng tôi đã nhận xét về chủ đề đó. Thật không may là phiên bản AEM không có sẵn cho đến cuối tháng 11 và đó là quá xa. –

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