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-INF
的MANIFEST.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来解决它。
我有同样的错误信息,我的方式来处理它,如下所示:
- 首先检查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放课的地方。
- 你会看到XYZ类还没有build立。 为了build立它,你可以去菜单“项目” – >“清洁…” – >select您的Web应用程序进行清理。
- 完成之后,请尝试重新启动tomcat服务器,然后再次检查文件目录。 你的class级应该在那里。 至less它适合我。 希望它有帮助。