Java错误:只能导入类型。XYZ解析为一个包
我得到一个错误:“只能导入一个类型。XYZ解析为一个包。” 有人解释了原因,但我不确定该怎么做才能解决这个问题。仅供参考:我正在使用Eclipse。我在下面添加了执行导入操作的代码。java.util.*导入工作正常Java错误:只能导入类型。XYZ解析为一个包,java,jsp,tomcat,classpath,Java,Jsp,Tomcat,Classpath,我得到一个错误:“只能导入一个类型。XYZ解析为一个包。” 有人解释了原因,但我不确定该怎么做才能解决这个问题。仅供参考:我正在使用Eclipse。我在下面添加了执行导入操作的代码。java.util.*导入工作正常 <%@ page import="java.util.*"%> <%@ page import="org.eresearch.knowledgeportal.model.Category"%> <%@ page import="org.erese
<%@ 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();
//
%>
您必须从包中导入某些内容,如类、枚举或接口对象,如下所示:
import some.package.SomeClass;
或者,从包中导入所有内容(不推荐)
编辑:也许我读得不够仔细。您试图从中导入的包位于文件系统的何处?它在WEB-INF/lib下吗?有更多细节吗?(这是在JSP中还是在链接的网页中?)
如果是这样,您可以始终使用完全限定的类名。而不是:
import foo.bar.*;
Baz myBaz;
你可以用
foo.bar.Baz myBaz;
没有进一步的细节,这听起来像是类的导入声明中的错误。如果所有导入声明都从包或单个类导入所有类,请选中:
import all.classes.from.package.*;
import only.one.type.named.MyClass;
编辑
好的,在编辑之后,看起来这是一个jsp问题
编辑2
,这个问题似乎有相似之处,受害者通过重新安装eclipse解决了这个问题。首先,我会尝试安装第二个eclipse实例,其中只包含最必要的插件、一个新的工作区、导入到干净工作区的项目,并希望一切顺利……好吧,您的Web应用程序并没有提供足够的详细信息,但我猜您有一个类似于以下内容的JSP:
<%@ page import="java.util.*,x.y.Z"%>
或者捆绑
x.y.Z.class
的JAR存在于WEB-INF/lib
好的,我刚刚解决了它。在上一次导入中,我通过复制其他代码示例添加了“;”。我想这是标准的行尾
所以
变成
<%@ page import="java.util.*" %>
<%@ page import="org.eresearch.knowledgeportal.dao.CategoryDao" %>
<%@ page import="org.eresearch.knowledgeportal.model.Category;" %>
我知道现在回复这篇文章已经太晚了,但由于我没有看到任何明确的答案,我还是会这么做的 您可能想在eclipse上查看
META-INF
中的MANIFEST.MF
然后您可能需要添加类文件的路径,如
类路径:WEB-INF/classes
在更改类名称中的字母大小写后,我也遇到了这个奇怪的错误。文件没有按预期复制到tomcat服务器,我不得不手动删除并重新部署。可能是因为我使用了不区分大小写的操作系统?我也遇到了类似的问题。在eclipse中,我将我的项目与工作正常的示例项目(由maven原型生成)进行了比较。我发现我的项目在/.classpath文件中遗漏了2行。我复制了那两行,它解决了这个问题。尽管我在项目首选项中设置了构建路径,但由于某些原因,eclipse并没有相应地进行更新
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
...
</classpath>
...
我的贡献:我得到这个错误是因为我创建了一个名为3lp的包。
但是,根据java规范,不允许以数字开头命名包。
我将它改为_3lp,现在它可以工作了。我在Netbeans中遇到了这个错误。就像大多数奇怪的错误一样,这些错误都是无中生有的,我通过转到项目属性、更改源代码/二进制格式(不管是什么,只是一些不同的内容)并进行清理和构建来解决它 我打赌您有一个名为org.ivec.eresearch.knowledgeportal.model.category(小型
c
)的包,并且运行在不区分大小写的文件系统(如Windows或Mac)上。当类和包存在时,编译器似乎会感到困惑
您可以重命名类“Category”或包“Category”,此错误将消失。不幸的是,我不确定这是Tomcat还是ECJ错误。如果您使用Maven并将Java类打包为JAR,那么请确保JAR是最新的。当然,仍然假设JAR在您的类路径中。我通过将包含导入类的JAR文件添加到
WEB-INF/Lib
中解决了这个问题 您是否正在尝试像我一样导入重写的类
如果是这样,则重写的类位于错误的包中,或者根本不存在
创建或将类移动到正确的位置(src/[package.package].[class])可以解决您的问题。如果您拼写类名错误或类不在类路径上,JSP处理器会说它“解析为包”,而不是说它不存在。这让我今天快发疯了,因为我一直没有看到我的打字错误。将.class文件单独生成并粘贴到工作区的相关包中。
刷新项目。对我来说,这是一个错误的部署。部署正确,一切正常(查看详细信息)。我收到了相同的错误消息,我的处理方法如下:
这通常发生在混合(在同一jsp页面中)静态jsp导入时:
<%@include file="...
<jsp:include page="...
这会生成异常:“只能导入类型…”我通过在tomcat lib目录中添加JAR来解决它。因此我有了
<%@ page import="java.util.*" %>
<%@ page import="org.eresearch.knowledgeportal.dao.CategoryDao" %>
<%@ page import="org.eresearch.knowledgeportal.model.Category;" %>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
...
</classpath>
<%@include file="...
<jsp:include page="...