Подтвердить что ты не робот

JasperException - Файл не найден, даже если тег присутствует

Alright StackOverflow, я приду к вам в нужное время.

Я унаследовал проект с помощью специальной библиотеки тегов. Проект находится в AEM, но проблема скорее связана с прямой Java-частью вещей и не имеет ничего общего с AEM, о котором я знаю. AEM построена на OSGI, так что это может быть связано, но опять-таки это вряд ли будет частью ответа.

По сути, я получаю исключение только на одном из двух серверов. В нем говорится:

org.apache.sling.api.scripting.ScriptEvaluationException: org.apache.sling.scripting.jsp.jasper.JasperException: Файл "/META-INF/tags/helloWorld.tagx" не найден

Теперь - это helloWorld.tagx - это вид мусора, оставленного в проекте шаблона, но по какой-то причине он необходим. Здесь есть несколько вопросов.

  • Тег находится в нужном месте (META-INF/tags/helloWorld.tagx), и я использую jsptld-maven-plugin для создания файла tld, который выглядит корректно для меня.

Конфигурация плагина (а также 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> 

И сегмент из полученного tld файла:

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

Так что это выглядит хорошо для меня, и я много раз искал и нашел людей с синтаксическими ошибками и т.д., но я не считаю, что это имеет место здесь, тем более, что он работает на одном сервере.

  1. Странная часть - это тег, который фактически не используется нигде, но удаление его не решает проблему. Jsp, бросающий эту ошибку, использует другие теги, но не этот. Буквально нет ссылок на этот тег во всем проекте - я думаю, что это может скрыть еще одну проблему. Ошибка говорит, что это в строке 6 JSP, но ни исходный JSP, ни скомпилированный JSP не имеют ничего интересного в строке 6 или вообще в файле. Опять же, даже скомпилированные JSP не имеют ссылки на этот тег!

Я рад предоставить другую информацию. Мои знания об этом довольно бедны, поэтому я не совсем уверен, какая информация актуальна. Любая помощь или советы по устранению неполадок очень приветствуются!

Полная трассировка стека здесь

4b9b3361

Ответ 1

Лучше всего пройти через Adobe Daycare. Они очень хороши в получении патчей. Особенно, если у вашего клиента есть существующие отношения с ними, которые они должны, если они используют AEM.

Ответ 2

Проблема связана с Файлы сценариев не найдены. Ссылка.

Это ошибка, которая гласит: если taglib в пакете ссылается на тег, реализованный как script (located in /META-INF/tags), этот script не найден, поскольку он не в пределах пакета, содержащего tld. Он скорее используется как ресурс в classpath.

Исправлена ​​ошибка в версии JSP 2.3.2. Поэтому используйте эту версию JSP в своем проекте. Более того, эта ошибка была бы исправлена ​​в AEM 6.3.1.1 или выше,

Здесь полезен thread, связанный с этой проблемой.