JasperException - 即使存在标记也找不到文件
JasperException - File Not Found even when tag is present
好的 Whosebug,我会在需要的时候来找你。
我继承了一个带有自定义标签库的项目。该项目在 AEM 中,但问题更多是直接 Java 方面的问题,并不是我所知道的 AEM 特有的问题。 AEM 基于 OSGI 构建,因此 可能 相关,但同样不太可能成为答案的一部分。
基本上,我只在两台服务器中的一台上遇到异常。它说:
org.apache.sling.api.scripting.ScriptEvaluationException: org.apache.sling.scripting.jsp.jasper.JasperException: File "/META-INF/tags/helloWorld.tagx" not found
现在 - 这个 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>
所以它对我来说看起来不错,我做了很多搜索并找到了语法错误等的人,但我不相信这里是这种情况,特别是因为它在一台服务器上工作.
- 奇怪的是标签实际上并没有在任何地方使用,但是删除它并不能解决问题。 jsp 抛出这个错误使用了其他标签,但不是这个。在整个项目中实际上没有引用这个标签——我认为它可能隐藏了另一个问题。该错误表明它位于 JSP 的第 6 行,但源代码 JSP 或编译后的 JSP 在第 6 行或文件中根本没有任何有趣的内容。同样,即使编译的 JSPs 也没有引用这个标签!
我很乐意提供其他信息。我对此知之甚少,所以我不确定哪些信息是相关的。非常感谢任何帮助或疑难解答提示!
完整堆栈跟踪here
此问题与未找到脚本标记文件有关。 Reference。
这是一个 bug,如果 bundle 中的 taglib 引用作为脚本实现的标签 (located in /META-INF/tags)
找不到该脚本 未 在包含 tld
的捆绑包中搜索。它更像是用作类路径上的资源。
该错误已在 JSP 2.3.2 版本中修复。因此,请在您的项目中使用此 JSP 版本。此外,此错误将在 AEM 6.3.1.1 或更高版本、
中修复
这里是与此问题相关的有用 thread。
你最好的选择是通过 Adobe Daycare。他们非常擅长为您打补丁。特别是如果您的客户与他们有现有关系,如果他们使用 AEM,他们应该这样做。
好的 Whosebug,我会在需要的时候来找你。
我继承了一个带有自定义标签库的项目。该项目在 AEM 中,但问题更多是直接 Java 方面的问题,并不是我所知道的 AEM 特有的问题。 AEM 基于 OSGI 构建,因此 可能 相关,但同样不太可能成为答案的一部分。
基本上,我只在两台服务器中的一台上遇到异常。它说:
org.apache.sling.api.scripting.ScriptEvaluationException: org.apache.sling.scripting.jsp.jasper.JasperException: File "/META-INF/tags/helloWorld.tagx" not found
现在 - 这个 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>
所以它对我来说看起来不错,我做了很多搜索并找到了语法错误等的人,但我不相信这里是这种情况,特别是因为它在一台服务器上工作.
- 奇怪的是标签实际上并没有在任何地方使用,但是删除它并不能解决问题。 jsp 抛出这个错误使用了其他标签,但不是这个。在整个项目中实际上没有引用这个标签——我认为它可能隐藏了另一个问题。该错误表明它位于 JSP 的第 6 行,但源代码 JSP 或编译后的 JSP 在第 6 行或文件中根本没有任何有趣的内容。同样,即使编译的 JSPs 也没有引用这个标签!
我很乐意提供其他信息。我对此知之甚少,所以我不确定哪些信息是相关的。非常感谢任何帮助或疑难解答提示!
完整堆栈跟踪here
此问题与未找到脚本标记文件有关。 Reference。
这是一个 bug,如果 bundle 中的 taglib 引用作为脚本实现的标签 (located in /META-INF/tags)
找不到该脚本 未 在包含 tld
的捆绑包中搜索。它更像是用作类路径上的资源。
该错误已在 JSP 2.3.2 版本中修复。因此,请在您的项目中使用此 JSP 版本。此外,此错误将在 AEM 6.3.1.1 或更高版本、
中修复这里是与此问题相关的有用 thread。
你最好的选择是通过 Adobe Daycare。他们非常擅长为您打补丁。特别是如果您的客户与他们有现有关系,如果他们使用 AEM,他们应该这样做。