Java错误:只能导入类型.XYZ解析为一个包

Ank*_*kur 74 java jsp tomcat classpath

我收到错误:"只能导入一个类型.XYZ会解析为一个包."

有人在这里解释了原因,但我不确定我应该做些什么来解决这个问题.仅供参考:我正在使用Eclipse.我添加了下面导入的代码.java.util.*import工作正常.

 <%@ page import="java.util.*"%>
 <%@ page import="org.eresearch.knowledgeportal.model.Category"%>
 <%@ page import="org.eresearch.knowledgeportal.dao.CategoryDao"%>

 <% 
  CategoryDao catDao = new CategoryDao();
  ArrayList<Category> catList = catDao.selectCategory();

 //
 %>
Run Code Online (Sandbox Code Playgroud)

编辑:实际错误如下:

 org.apache.jasper.JasperException: Unable to compile class for JSP: 

 An error occurred at line: 7 in the generated java file
 Only a type can be imported. org.eresearch.knowledgeportal.model.Category resolves to a package
Run Code Online (Sandbox Code Playgroud)

Pas*_*ent 63

好吧,你并没有真正提供关于你的webapp的足够细节,但我的猜测是你有一个这样的JSP:

<%@ page import="java.util.*,x.y.Z"%> 
Run Code Online (Sandbox Code Playgroud)

并且x.y.Z无法在类路径中找到(即不存在WEB-INF/classes于JAR之下WEB-INF/lib).

仔细检查您在Tomcat上部署的WAR是否具有以下结构:

my-webapp
|-- META-INF
|   `-- MANIFEST.MF
|-- WEB-INF
|   |-- classes
|   |   |-- x
|   |   |   `-- y
|   |   |       `-- Z.class
|   |   `-- another
|   |       `-- packagename
|   |           `-- AnotherClass.class
|   |-- lib
|   |   |-- ajar.jar
|   |   |-- bjar.jar
|   |   `-- zjar.jar
|   `-- web.xml
|-- a.jsp
|-- b.jsp
`-- index.jsp
Run Code Online (Sandbox Code Playgroud)

或者捆绑的JAR x.y.Z.class存在于其中WEB-INF/lib.

  • 你真的花了点时间构建那个ASCII树吗?! (23认同)
  • 当然"只能导入一个类型.XYZ解析为一个包"真的意味着"在类路径中找不到依赖".当然! (4认同)
  • 我使用`tree`命令,但我不得不自定义它:) (2认同)

Ank*_*kur 35

好的,我刚解决了.在上一次导入中,我添加了一个";" 通过复制其他代码示例.我想这是标准的行结束所需要的.

所以

<%@ page import="java.util.*" %>
<%@ page import="org.eresearch.knowledgeportal.dao.CategoryDao" %>
<%@ page import="org.eresearch.knowledgeportal.model.Category" %>
Run Code Online (Sandbox Code Playgroud)

成为

 <%@ page import="java.util.*" %>
 <%@ page import="org.eresearch.knowledgeportal.dao.CategoryDao" %>
 <%@ page import="org.eresearch.knowledgeportal.model.Category;" %>
Run Code Online (Sandbox Code Playgroud)

  • 分号只会导致语法错误. (11认同)

小智 7

如果拼写类名错误或类不在类路径上,JSP处理器会说它"解析为包"而不是它不存在.这让我疯狂,因为我一直没有看到我犯过的错字.