2017-10-25 19 views
11

W porządku StackOverflow, przychodzę do Ciebie w potrzebie.Wyjątek JasperException - nie można odnaleźć pliku nawet przy obecnym tagu.

Odziedziczyłem projekt z niestandardową biblioteką znaczników. Projekt jest w AEM, ale problem jest bardziej związany z prostą stroną Java i nie jest niczym szczególnym dla AEM, o którym mi wiadomo. AEM jest zbudowany na OSGI, dzięki czemu może być powiązany z, ale jest to raczej mało prawdopodobne, aby być częścią odpowiedzi.

Zasadniczo otrzymuję wyjątek tylko na jednym z dwóch serwerów. Mówi:

org.apache.sling.api.scripting.ScriptEvaluationException: org.apache.sling.scripting.jsp.jasper.JasperException: Plik "/META-INF/tags/helloWorld.tagx" nie znaleziono

Teraz - ten helloWorld.tagx jest rodzajem śmieci pozostałej z projektu szablonu, ale z jakiegoś powodu jest to niezbędne. Jest tu kilka problemów.

  1. Znacznik jest we właściwym miejscu (META-INF/tags/helloWorld.tagx) i używam jsptld-maven-plugin wygenerować plik tld który wygląda poprawna do mnie.

konfiguracja dla wtyczki (jak również 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> 

a segment z wynikowego pliku tld:

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

więc wygląda dobrze do mnie, a Zrobiłem wiele wyszukiwań i znalazłem ludzi z błędami składni itp., Ale nie sądzę, aby tak było w tym przypadku, zwłaszcza, że ​​działa on na jednym serwerze.

  1. Dziwną częścią jest tag nie jest w rzeczywistości używany w dowolnym miejscu, ale usunięcie go nie rozwiązuje problemu. JSP rzucający ten błąd używa innych znaczników, ale nie tego. W całym projekcie nie ma dosłownie żadnych odniesień do tego znacznika - myślę, że może to być ukrywanie kolejnego problemu. Błąd mówi, że jest on na linii 6 strony JSP, ale ani źródłowa strona JSP, ani skompilowana strona JSP nie mają nic interesującego w linii 6 lub w ogóle w pliku. Znowu nawet skompilowane strony JSP nie mają odniesienia do tego znacznika!

Chętnie udzielę innych informacji. Moja wiedza na ten temat jest dość słaba, więc nie jestem do końca pewien, jakie informacje są istotne. Każda pomoc lub wskazówki dotyczące rozwiązywania problemów są bardzo cenne!

Pełny stos ślad here

+0

Czym różnią się te dwie maszyny? na przykład ta sama wersja wszystkiego, to samo oprogramowanie, itp.? – mikep

+0

pełny stacktrace byłby pomocny –

+0

Który serwer aplikacji/kontener używasz? Czy możesz podać listę plików zawartych w WEB-INF/lib? A co z TLD w web.xml - czy możesz podać web.xml? BTW: Zakładam, że twoja kompilacja ma prostą konstrukcję maven, bez wyłupywania, przepakowywania. –

Odpowiedz

1

Najlepiej jest przejść przez Adobe Daycare. Są całkiem dobrzy w otrzymywaniu łatek. Zwłaszcza jeśli twój klient ma z nimi relację, którą powinien, jeśli używa AEM.

0

Kwestia dotyczy tag Oskryptowane pliki nie znajdują. Reference.

Jest to bug, które stwierdza, Jeśli taglib w wiązce, odwołuje się tag realizowany jako skrypt (located in /META-INF/tags) Ten skrypt nie zostanie znaleziony, jak to jest nie wyszukiwane w ramach pakietu zawierającego tld. Jest raczej używany jako zasób w ścieżce klas.

Błąd został naprawiony w wersji JSP 2.3.2. Wykorzystaj tę wersję JSP w swoim projekcie. Co więcej, błąd ten został naprawiony w AEM 6.3.1.1 lub wyższej,

Tutaj jest pomocne thread związane z tym problemem.

+0

Doceniam odpowiedź, ale zobaczysz, że już skomentowałem ten wątek. Niestety ta wersja AEM jest niedostępna do końca listopada, a to zbyt daleko. –

Powiązane problemy