代码之家  ›  专栏  ›  技术社区  ›  Jamie Counsell

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

  •  11
  • Jamie Counsell  · 技术社区  · 7 年前

    好的,我有需要就来找你。

    我继承了一个带有自定义标记库的项目。该项目在AEM中,但问题更多的是Java方面的问题,我所知道的与AEM无关。AEM构建在OSGI上,因此 能够 是相关的,但这不太可能是答案的一部分。

    从本质上讲,我在两台服务器中只有一台出现异常。它说:

    组织。阿帕奇。吊索应用程序编程接口。脚本编写。ScriptEvaluationException:组织。阿帕奇。吊索脚本编写。jsp。贾斯珀。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> 
    

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

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

    所以我觉得它很好,我做了很多搜索,找到了有语法错误的人,等等。但我不认为是这样,尤其是因为它在一台服务器上工作。

    1. 习惯于

    我很乐意提供其他信息。我对这方面的知识相当贫乏,所以我不确定哪些信息是相关的。非常感谢任何帮助或故障排除提示!

    完整堆栈跟踪 here

    2 回复  |  直到 7 年前
        1
  •  1
  •   apothic    7 年前

    Adobe Daycare . 他们很擅长给你打补丁。特别是如果你的客户与他们有现有关系,如果他们使用AEM,他们应该这样做。

        2
  •  0
  •   Rohit Gaikwad konda    7 年前

    问题涉及 未找到脚本标记文件 . Reference .

    这是一个 缺陷 这表明,如果捆绑包中的标记库引用了作为脚本实现的标记 (located in /META-INF/tags) 未按原样找到此脚本 在包含 tld

    该错误已在中修复 JSP 2.3.2 版本因此,在项目中使用这个JSP版本。此外,这个bug在 AEM 6.3.1.1或更高版本 ,

    这里是一个有用的 thread 与此问题相关。