【问题标题】:Trouble importing classes to JSP将类导入 JSP 时遇到问题
【发布时间】:2024-04-26 06:35:01
【问题描述】:

明智地jspc 告诉我以下关于我的JSPs 之一

[ERROR] MyClassName cannot be resolved to a type

确实不存在.. 嗯.. 让我们包括它!

<%@ page import="com.a.b.c.MyClassName"%>

好的,现在jspc

[ERROR] Only a type can be imported. com.a.b.c.MyClassName resolves to a package

这根本不是真的,但是好的,让我们试试通配符

<%@ page import="com.a.b.c.*"%>

jspc 返回原始错误

[ERROR] MyClassName cannot be resolved to a type

有什么想法吗?


更新

已确认:问题与构建时间无关。在运行时,假设所有导入都如上所示完成,一切正常。

【问题讨论】:

  • Settings | Compiler | ValidationValidate on build 是否启用了 Jasper 选项?

标签: java jsp intellij-idea


【解决方案1】:

据我了解,com.a.b.c.MyClassName 位于 JSP 无法访问的类加载器中。

如果您有多个 Web 应用程序并且 JSP 在一个 Web 应用程序中而类在另一个 Web 应用程序中,则可能会发生这种情况。

要测试,只需将类放在应用服务器全局类路径中。

【讨论】:

  • 当我的项目编译时.class文件被放入target/project_name/classes。我可以在 JSP(或其他地方)的哪个位置将它们添加到 classpath
  • 所以它们都在同一个 Web 应用程序 (WAR) 中?在任何情况下,您也可以尝试在 JSP 中使用 Class.forName(com.a.b.c.MyClassName) 并查看是否可以从 JSP 加载类或类加载器返回什么异常。这可以排除或确认类加载器问题。
  • 托尼,请参阅上面的更新。似乎该问题与构建时间无关。在运行时,一旦导入到位,事情就会起作用。我的项目设置会以某种方式搞砸吗?
  • 因此,由于 JSP 编译器在构建时的“类路径”视图,这似乎很可能是一个类加载器问题。我在 jspc 使用页面中看到他们说要与maven-war plugin 结合使用。您是否仔细检查了该插件的类路径配置?
【解决方案2】:

您的 JSP 配置似乎没有指向该类的 JAR/资源的链接。

一些可以提供帮助的链接:

The same problem as yours

A JAR include problem leading to the same error

A Tomcat config problem leading... to the same

我希望这些链接有用。

【讨论】:

  • 我查看了第一个链接(在发布之前)并且解决方案没有帮助
  • 好的,还有其他的?有帮助吗?