jsp-Java错误:只能导入类型。 XYZ解析为包
我收到错误消息:“只能导入类型。XYZ解析为包。”
有人在这里解释了原因,但是我不确定应该如何解决。 仅供参考:我正在使用Eclipse。 我在下面添加了执行导入的代码。 java.util。*导入工作正常。
CategoryDao catDao = new CategoryDao();
ArrayList 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
22个解决方案
61 votes
好吧,您实际上并未在Web应用程序上提供足够的详细信息,但我猜您是拥有这样的JSP:
并且x.y.Z.class在类路径上找不到(即在WEB-INF/lib下也不存在在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
或WEB-INF/lib下存在捆绑x.y.Z.class的JAR。
Pascal Thivent answered 2019-09-28T04:32:41Z
33 votes
好,我解决了。 在上一次导入中,我添加了“;” 通过复制其他代码示例。 我想这是必需的标准行结尾。
所以
成为
Ankur answered 2019-09-28T04:33:16Z
7 votes
如果您拼写了错误的类名或该类不在类路径中,则JSP处理器将说它“解析为包”而不是不存在。 今天,这让我发疯了,因为我一直没看错错字。
gmcgath answered 2019-09-28T04:33:41Z
3 votes
没有更多细节,这听起来像是类的导入声明中的错误。 检查所有导入声明是从包中导入所有类还是单个类:
import all.classes.from.package.*;
import only.one.type.named.MyClass;
编辑
OK,编辑后,看起来像是一个jsp问题。
编辑2
这是另一个论坛条目,该问题似乎有相似之处,并且受害者通过重新安装Eclipse解决了该问题。 我会首先尝试-仅使用最必要的插件,新工作区,导入到该干净工作区的项目安装第二个eclipse实例,并希望获得最好的...
Andreas_D answered 2019-09-28T04:34:25Z
3 votes
我在Netbeans中收到此错误。 像大多数类似的异常错误一样,我会通过转到项目属性,更改源代码/二进制格式(无关紧要,只是有所不同)并进行清理和构建来解决它。
Gullbyrd answered 2019-09-28T04:34:50Z
2 votes
我通过将罐子添加到tomcat lib目录中来解决它。
Pratik Gaurav answered 2019-09-28T04:35:14Z
1 votes
在更改类名的字母大小写之后,我也遇到了这个奇怪的错误。 该文件未按预期复制到tomcat服务器,我不得不手动将其删除并重新部署。 也许是因为我使用不区分大小写的操作系统?
jediz answered 2019-09-28T04:35:39Z
1 votes
我知道现在回复这个帖子还为时已晚,但是由于我看不到任何明确的答案,所以我还是会这样做。
您可能想在日食中查看META-INF中的Class-Path: WEB-INF/classes。
那么您可能需要添加类文件的路径。
Class-Path: WEB-INF/classes
optimystery answered 2019-09-28T04:36:26Z
1 votes
单独生成.class文件,并将其粘贴到相关程序包中的工作区中。刷新项目。
Karan Rajput answered 2019-09-28T04:36:53Z
1 votes
对我来说,这是错误的部署。 部署正确,一切正常(请查看我的问题以获取详细信息)。
parsecer answered 2019-09-28T04:37:20Z
0 votes
您必须从包中导入一些东西,例如类,枚举或接口,如下所示:
import some.package.SomeClass;
或者,从包中导入所有内容(不推荐)
import some.package.*;
编辑:也许我没有读足够近。 您要从中导入的软件包在文件系统上的哪里? 是在WEB-INF / lib下吗?
answered 2019-09-28T04:37:59Z
0 votes
还有更多细节吗? (这是在JSP中还是在链接的网页中?)
如果是这样,您始终可以只使用完全限定的类名。
而不是:
import foo.bar.*;
Baz myBaz;
您可以使用
foo.bar.Baz myBaz;
William Billingsley answered 2019-09-28T04:38:43Z
0 votes
我有一个类似的问题。 在Eclipse中,我将我的项目与运行良好的示例项目(由Maven原型生成)进行了比较。 我发现我的项目在/.classpath文件中错过了2行。 我复制了这两行,并解决了该问题。 似乎即使我在项目首选项中设置了构建路径,由于某些原因,Eclipse也没有进行相应的更新。
...
Tharaka Manawardhana answered 2019-09-28T04:39:14Z
0 votes
我的贡献:之所以出现此错误,是因为我创建了一个名为3lp的软件包。但是,根据Java规范,您不能以数字开头来命名软件包。我将其更改为_3lp,现在可以使用了。
Cocu_1012 answered 2019-09-28T04:39:41Z
0 votes
我敢打赌,您有一个名为org.ivec.eresearch.knowledgeportal.model.category的程序包(小型c),并且在不区分大小写的文件系统(如Windows或Mac)上运行。 似乎当类和包存在时,编译器会感到困惑。
您可以重命名类“ Category”或包“ category”,此错误将消失。 不幸的是,我不确定这是Tomcat还是ECJ错误。
Nic Cottrell answered 2019-09-28T04:40:16Z
0 votes
如果您正在使用Maven并将Java类打包为JAR,请确保JAR是最新的。 当然仍然假定JAR在您的类路径中。
H.Rabiee answered 2019-09-28T04:40:42Z
0 votes
我通过将包含导入类的jar文件添加到WEB-INF/Lib中来解决它。
Abdellah Benrebea answered 2019-09-28T04:41:08Z
0 votes
您是否要像我一样导入覆盖的类?
如果是这样,则您覆盖的类位于错误的包中,或者根本不存在。
创建类或将类移动到正确的位置(src / [package.package]。[class])可以解决您的问题。
Graham P Heath answered 2019-09-28T04:41:49Z
0 votes
当混合(在同一jsp页面中)静态jsp导入时,通常会发生这种情况:
使用动态jsp导入: