JasperException - 即使存在标记,也找不到文件

Jam*_*ell 11 java jsp osgi maven

好吧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是一个模板项目留下的垃圾,但由于某种原因,它是必不可少的.这里有一些问题.

  1. 标签在正确的位置(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> 
Run Code Online (Sandbox Code Playgroud)

以及生成的tld文件中的段:

<tag-file>
    <name>helloWorld</name>
    <path>/META-INF/tags/helloWorld.tagx</path>
</tag-file>
Run Code Online (Sandbox Code Playgroud)

所以它看起来很好,我已经做了很多搜索,发现有语法错误的人,等等,但我不相信这种情况,特别是因为它适用于一台服务器.

  1. 奇怪的部分是标签实际上并未在任何地方使用,但删除它并不能解决问题.抛出此错误的jsp使用其他标记,但不使用此标记.在整个项目中几乎没有引用此标记 - 我认为它可能隐藏了另一个问题.该错误表明它位于JSP的第6行,但源JSP或编译的JSP在第6行或文件中都没有任何有趣的内容.同样,即使编译的JSP也没有引用此标记!

我很乐意提供其他信息.我对此的了解非常差,所以我不确定哪些信息是相关的.任何帮助或疑难解答提示非常感谢!

这里有完整的堆栈跟踪

apo*_*hic 1

您最好的选择是通过Adob​​e Daycare。他们很乐意为您提供补丁。特别是如果您的客户与他们有现有的关系(如果他们使用 AEM,他们就应该这样做)。