Ошибка Java: только тип может быть импортирован. XYZ разрешает пакет - PullRequest
70 голосов
/ 07 декабря 2009

Я получаю сообщение об ошибке: «Только тип может быть импортирован. XYZ разрешается в пакет».

Кто-то объяснил причину здесь , но я не уверен, что я должен был сделать, чтобы это исправить. К вашему сведению: я использую 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

Ответы [ 22 ]

62 голосов
/ 07 декабря 2009

Ну, вы не предоставляете достаточно информации о своем веб-приложении, но я предполагаю, что у вас есть JSP с чем-то вроде этого:

<%@ page import="java.util.*,x.y.Z"%> 

И 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

Или что JAR, который связывает x.y.Z.class, присутствует в WEB-INF/lib.

33 голосов
/ 07 декабря 2009

ОК, я только что решил. В последнем импорте я добавил ";" копируя другие примеры кода. Я предполагаю, что это стандартное окончание строки, которое требуется.

Так

<%@ 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;" %>
7 голосов
/ 07 января 2015

Если вы введете неправильное имя класса или класс не указан в пути к классам, процессор JSP скажет, что он «разрешается в пакет», а не в том, что он не существует. Это сводило меня с ума сегодня, так как я не видел опечатку, которую я сделал.

3 голосов
/ 07 декабря 2009

Без дополнительных подробностей это звучит как ошибка в объявлении импорта класса. Проверьте, все ли объявления импорта импортируют все классы из пакета или одного класса:

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

Редактировать

ОК, после редактирования похоже, что это проблема jsp.

Редактировать 2

Вот еще одна запись форума , проблема, похоже, имеет сходство, и жертва решила ее, переустановив eclipse. Я бы попробовал это сначала - установить второй экземпляр Eclipse, используя только самые необходимые плагины, новое рабочее пространство, проект, импортированный в это чистое рабочее пространство, и надеяться на лучшее ...

3 голосов
/ 26 октября 2012

Я получил эту ошибку в Netbeans. Как и в случае большинства странных ошибок, подобных этой, которые появляются из ниоткуда, я решаю их, перейдя в свойства проекта, изменив исходный / двоичный формат (неважно, что, просто что-то другое) и выполнив очистку и сборку.

3 голосов
/ 07 сентября 2017

Я решил проблему, добавив файлы jar в каталог lib tomcat.

1 голос
/ 02 мая 2015

создайте отдельный файл .class и вставьте его в соответствующий пакет в рабочую область. Обновить проект.

1 голос
/ 12 сентября 2016

Для меня это было неправильное развертывание. Развернуто правильно, все работает (подробности см. на мой вопрос ).

1 голос
/ 01 декабря 2011

Я тоже столкнулся с этой странной ошибкой после изменения регистра букв в имени класса. Файл не был скопирован на сервер Tomcat, как ожидалось, мне пришлось удалить его вручную и повторно развернуть. Может быть, потому что я использую нечувствительную к регистру операционную систему?

1 голос
/ 21 ноября 2011

Я знаю, что уже слишком поздно отвечать на это сообщение, но поскольку я не вижу четкого ответа, я все равно это сделаю ...

вы можете захотеть проверить MANIFEST.MF в META-INF на вашем затмении.

тогда вам может понадобиться добавить путь к файлам вашего класса, например ..

Class-Path: WEB-INF/classes

...