Java错误:只能导入一个types。 XYZparsing为一个包

我得到错误:“只能导入一个types,XYZparsing为一个包”。

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

<%@ 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(); // %> 

编辑:实际的错误是:

  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 

那么,你没有提供足够的细节在你的web应用程序,但我的猜测是,你有一个像这样的JSP:

 <%@ page import="java.util.*,xyZ"%> 

而在类path中找不到xyZ (即不在WEB-INF/classes也不在WEB-INF/lib的JAR中)。

仔细检查您在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 

或者,捆绑xyZclass的JAR存在于WEB-INF/lib

好的,我解决了它。 在最后一次导入中,我添加了一个“;” 通过复制其他代码示例。 我想这是标准的结束是必需的。

所以

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

成为

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

如果拼写类名错误或者类不在类path中,那么JSP处理器将会说它“parsing为包”而不是它不存在。 这让我疯狂,因为我一直没有看到我犯的一个错字。

没有进一步的细节,这听起来像是一个类的导入声明中的错误。 检查,如果所有的导入声明或者从一个包或者一个类中导入所有的类:

 import all.classes.from.package.*; import only.one.type.named.MyClass; 

编辑

好了,编辑之后,看起来就像是一个jsp问题。

编辑2

这里是另一个论坛入口 ,这个问题似乎有相似之处,受害者通过重新安装eclipse来解决这个问题。 我会尝试一个 – 安装第二个实例只有最必要的插件,一个新的工作区,项目导入到干净的工作区,并希望最好的…

我也经历了这个奇怪的错误,在改变了一个类的名字的情况下。 该文件没有按预期复制到tomcat服务器,我不得不手动删除它并重新部署。 也许是因为我使用大小写不敏感的操作系统?

我在Netbeans得到这个错误。 就像大多数奇怪的错误一样,这些东西是从无处出现的,我通过改变项目属性,改变源/二进制格式(不pipe什么,只是不同的东西),做一个干净的构build来解决它。

我知道现在回复这个post太迟了,但是因为我没有看到任何明确的答案,我仍然会这么做。

你可能想在日食中检查META-INFMANIFEST.MF

那么你可能需要添加类文件的path,如..

Class-Path: WEB-INF/classes

生成.class文件,将其分离并粘贴到相关的包到工作区中。 刷新项目。

你必须从包中导入一些东西,比如类,枚举或者接口,像这样:

 import some.package.SomeClass; 

或者,从包中导入一切(不推荐)

 import some.package.*; 

编辑:也许我没有读得够近。 你想从文件系统中导入的软件包在哪里? 它是在WEB-INF / lib下?

有更多的细节? (这是在一个JSP中,如在链接的网页?)

如果是这样,你总是可以使用完全合格的类名称。
而不是:

 import foo.bar.*; Baz myBaz; 

您可以使用

 foo.bar.Baz myBaz; 

我有一个类似的问题。 在日食中,我将我的项目与一个正常工作的示例项目(由maven原型生成)进行了比较。 我发现我的项目在/.classpath文件中错过了2行。 我复制了这两行,并解决了这个问题。 看来即使我在项目首选项中设置了构buildpath,由于某些原因,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> 

我的贡献:我得到这个错误,因为我创build了一个名为3lp的包。 但是,根据java规范,你不能以一个数字来命名你的包。 我把它改为_3lp,现在可以工作了。

我敢打赌,你有一个名为org.ivec.eresearch.knowledgeportal.model的包。 类别 (小c ),并在Windows或Mac等不区分大小写的文件系统上运行。 当类和包存在时,似乎编译器会感到困惑。

您可以重命名class级“类别”或包“类别”,这个错误将消失。 不幸的是我不确定这是Tomcat还是ECJ的错误。

如果您使用Maven并将Java类打包为JAR,那么请确保JAR是最新的。 仍然假定JAR在你的类path当然。

我通过将包含导入类的jar文件添加到WEB-INF/Lib解决了这个问题。

你是否试图像我一样导入一个重写的类?

如果是这样,你重写的类是在错误的包,或根本不存在。

创build或移动类到正确的位置(src / [package.package]。[class])可以解决您的问题。

对我来说这是一个错误的部署。 正确部署,一切正常(检查我的问题的细节)。

这通常发生在混合时(在同一个jsp页面中)static jsp import:

 <%@include file="... 

用dynamicjsp导入:

 <jsp:include page="... 

而你的types已经被“静态导入”的jsp导入了。 当“dynamic导入的”jsp – >需要使用相同的types(然后导入)时,会生成exception:“只能导入types…”

我通过在tomcat lib目录中添加jar来解决它。

我有同样的错误信息,我的方式来处理它,如下所示:

  1. 首先检查Tomcat发布Web应用程序的文件目录,例如D:\ Java \ workspace.metadata.plugins \ org.eclipse.wst.server.core \ tmp1 \ wtpwebapps \ myDatatable \ WEB-INF \ classes,我们通常把我们的课程。 如果这不是放置类的地方,那么您必须find默认的地方,通过右键单击您的Web应用程序根目录 – > Build Path – > Configure Build Bath … – >然后检查“源”标签,找出“默认输出文件夹”的字段值。 这应该是Tomcat放课的地方。
  2. 你会看到XYZ类还没有build立。 为了build立它,你可以去菜单“项目” – >“清洁…” – >select您的Web应用程序进行清理。
  3. 完成之后,请尝试重新启动tomcat服务器,然后再次检查文件目录。 你的class级应该在那里。 至less它适合我。 希望它有帮助。